<?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=Robberknight</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=Robberknight"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Robberknight"/>
	<updated>2026-04-21T16:11:57Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99614</id>
		<title>IRMP - english</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99614"/>
		<updated>2018-09-01T12:23:54Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: add a license section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the English translation of the [[IRMP#top|german IRMP documentation]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
Project Intention:&lt;br /&gt;
&lt;br /&gt;
Because RC5 isn&#039;t only outdated, today its already obsolete and because more and more electronic devices in consumer electronics around us are used, it is time to develop an IR-decoder that can &#039;understand&#039; about 90 % of IR-remotes that are used in our daily life.&lt;br /&gt;
&lt;br /&gt;
This article indroduces &#039;IRMP&#039; as &amp;quot;Infrared-Multiprotocol-Decoder&amp;quot; in all details. The counterpart, [[IRSND_-_english|IRSND]] as IR-Encoder can be found in this [[IRSND_-_english|document]].&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrared Multiprotocol Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Connection of a IR receiver module to MCU]]&lt;br /&gt;
&lt;br /&gt;
=== Supported MCUs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] has been implemented on several MCU families:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- and XC8/C18 compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (tested on STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (tested on STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several ARM-Cortex-µCs, for Example STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Officially supported µC-Series]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports More µC-Series, community supported]&lt;br /&gt;
&lt;br /&gt;
=== Supported IR Protocols ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] - the infrared remote decoder, which can decode several protocols at once, is capable of decoding the following protocols (in alphabetic order):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;supported protocols&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protocol || Vendor&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FAN|FAN]] || FAN, remote for fans&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, e.g. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]] || various european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon and other japanese vendors which are members of the  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner &#039;&#039;&#039;(NEW!)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MERLIN|MERLIN]]  || MERLIN remote (Pollin article number: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName and many more asian vendors.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NUBERT|NUBERT]] || Nubert, e.g. Subwoofer Systems&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PANASONIC|PANASONIC]] || PANASONIC Beamer (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PENTAX|PENTAX]] || PENTAX (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6A]] || Philips, Kathrein and others, e.g. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCCAR|RCCAR]] || RC Car: IR remote for RC toys &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCMM|RCMM]] || Fujitsu-Siemens e.g. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ROOMBA|ROOMBA]] || iRobot Roomba vacuum cleaner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#S100|S100]] || similar to RC5, but 14 instead of 13 Bits and 56kHz modulation. vendor unknown.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG48|SAMSUNG48]] || various air conditions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (e.g. T-Home-Mediareceiver, MERLIN-keyboard(Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SPEAKER|SPEAKER]] || Speaker Systems like X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#VINCENT|VINCENT]] || Vincent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of these protocols can be activated separately. If you want, you can activate all protocols. If you need only one protocol, you can disable all others. It will only be compiled the code that has been selected by the user.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] source for the AVR and PIC MCUs has been created as part of the [[Word Clock]] project.&lt;br /&gt;
&lt;br /&gt;
=== Thread in Forum ===&lt;br /&gt;
&lt;br /&gt;
Intention for an own IRMP article is the following thread in Projects&amp;amp;Code [http://www.mikrocontroller.net/topic/162119 IRMP - Infrared Multi Protocol Decoder] (in german language).&lt;br /&gt;
&lt;br /&gt;
== IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC protocol, RGB remote control, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Some vendors use their own proprietary protocol, such as Sony, Samsung and Matsuhita. Philips has developed [[IRMP_-_english#RC5 + RC5X|RC5]] and of course used for own purposes.&lt;br /&gt;
[[IRMP_-_english#RC5 + RC5X|RC5]] was seen in Europe as &#039;&#039;that&#039;&#039; standard IR-protocol which was adopted by many european vendors. Nowadays is [[IRMP_-_english#RC5 + RC5X|RC5]] nearly nowhere used - it can be ticked as &amp;quot;dead&amp;quot;. Although the successor [[IRMP_-_english#RC6_+_RC6A|RC6]] is used in actual european hardware, it is also used rarely.&lt;br /&gt;
&lt;br /&gt;
Also japanese vendors tried to establish an own standard, the so called [[IRMP_-_english#KASEIKYO|Kaseikyo]]- (or also &amp;quot;Japan-&amp;quot;) protocol. This is with a bitlength of 48 bits more versatile. But it has no general acceptance until today - even if you find it in some appliances.&lt;br /&gt;
&lt;br /&gt;
Nowadays the [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol is used (also mainly in japanese devices) - indeed in various premium and NoName products. I estimate the market share to 80 % for the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-protocol. Nearly all remotes in my daily use utilize the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-IR-Code. This starts at the TV-set, goes over the DVD-player to the Notebook remote and reaches up to NoName-Multimedaia-Harddrive, just to mention a few samples.&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports the following IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance|Pulse Distance]], typ. Example: [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Width|Pulse Width]], typ. Example: [[IRMP_-_english#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP_-_english#Biphase|Biphase (Manchester)]], typ. Example: Philips [[IRMP_-_english#RC5_+_RC5X|RC5]], [[IRMP_-_english#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Position|Pulse Position (NRZ)]], typ. Example: [[IRMP_-_english#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance Width|Pulse Distance Width]], typ. Example: [[IRMP_-_english#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
The pulses are modulated - usually with 36 kHz or 38 kHz - to reduce environment influences such as Indoorlightning or sunlight.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Distance Coding can be discovered by the following rule:&lt;br /&gt;
&lt;br /&gt;
* there is only &#039;&#039;&#039;one pulse length&#039;&#039;&#039; and there are &#039;&#039;&#039;two different pause lengths&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Width Coding can be discovered by the following rule: &lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;only one pause length&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
This is a mix from Pulse Distance and Pulse Width Coding, so:&lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;two different pause lengths.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
In Biphase Coding the order of pulse and pause gives the bit value.&lt;br /&gt;
Therefore a Biphase-Coding can be discovered by this criteria:&lt;br /&gt;
&lt;br /&gt;
* there is exactly &#039;&#039;&#039;one&#039;&#039;&#039; pause- and one pulse length, as well as the &#039;&#039;&#039;double&#039;&#039;&#039; pulse/pause length&lt;br /&gt;
&lt;br /&gt;
Usually the length for the pulse and pause are equal, that means the signal shape is symmetric. But IRMP knows also protocols which use different puls/pause lengths. This case is for example the [[IRMP_-_english#A1TVBOX|A1TVBOX]]-protocol.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
The pulse position coding is known from usual UART&#039;s. Every bit has a fixed length here. Depending on the value (0 or 1), it is a pulse or a pause.&lt;br /&gt;
&lt;br /&gt;
Typical criteria for a &#039;&#039;&#039;pulse position protocol&#039;&#039;&#039; is:&lt;br /&gt;
* there are &#039;&#039;&#039;multiples&#039;&#039;&#039; of a basic pulse/pause length&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A tabular listing of different IR-protocols can be found here: [[IRMP_-_english#IR_Protocols_in_Detail|IR Protocols in Detail]].&#039;&#039;&#039;&lt;br /&gt;
The specified timings are typical values. In some remotes they differ up to 40 % in real life. Therefore [[IRMP_-_english#top|IRMP]] uses minimum/maximum limits to be tolerant with the timing.&lt;br /&gt;
&lt;br /&gt;
== Protocol Detection ==&lt;br /&gt;
&lt;br /&gt;
The most of the [[IRMP_-_english#top|IRMP]] decoded protocols have something in common: they show a start bit which is unique for their timing.&lt;br /&gt;
&lt;br /&gt;
According to this start bit timing the most protocols are discriminated. [[IRMP_-_english#top|IRMP]] measures the timing of the start bit and reorders its timing tables &amp;quot;on-the-fly&amp;quot; for the discovered protocol. So the following bits can be read sequential without the need of storing a complete frame.&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] does not wait for reading a complete frame to analyze, it starts decoding after the first pulse detection.&lt;br /&gt;
&lt;br /&gt;
If the first read start bit is not unique, [[IRMP_-_english#top|IRMP]] follows multiple possible protocols. If for plausible reasons one protocol is no more possible this track will be dropped.&lt;br /&gt;
&lt;br /&gt;
The detection is implemented as a [[Statemachine|state machine]], which is called interrupt driven with an frequency of typically 15.000 per second. the [[Statemachine|state machine]] knows the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the first pulse length of the start bit&lt;br /&gt;
* detect the pause length of the start bit&lt;br /&gt;
* detect the pulse length of the first data bit&lt;br /&gt;
&lt;br /&gt;
After that, the pulse/pause length of the start bit are known. Now all enabled protocols are searched for this length. If a protocol matches, the timing table for this protocol is loaded and the following bits are checked if the pulse/pause timing still fit to the limis.&lt;br /&gt;
&lt;br /&gt;
So the [[Statemachine|state machine]] continues with the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the pauses of the data bits&lt;br /&gt;
* detect the pulse length of the data bits&lt;br /&gt;
* check timing. If different, switch back to another valid IR protocol, otherwise return&lt;br /&gt;
* detect the sop bit if present in the protocol&lt;br /&gt;
* check data for plausibility, like CRC or other redundant data bits&lt;br /&gt;
* convert data to device address and command&lt;br /&gt;
* detect code repetition by long key press, set according flag&lt;br /&gt;
&lt;br /&gt;
Indeed the [[Statemachine|state machine]] is even more complex because some protocols have no start bit (e.g. [[IRMP_-_english#DENON|Denon]]) or have multiple start bits (4 in [[IRMP_-_english#B.26O|B&amp;amp;O]]) or have within the frame another sync bit (z.B. [[IRMP_-_english#SAMSUNG|Samsung]]). These extra conditions are caught in the code by protocol specific &amp;quot;special cases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Switching to an other protocol can happen multiple times during receiving of a frame, f.e. from [[IRMP_-_english#NEC42|NEC42]] (42 Bit) to [[IRMP_-_english#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), when a premature sync bit was detected. Or from [[IRMP_-_english#NEC + extended NEC|NEC]]/[[IRMP_-_english#NEC42|NEC42]] (32/42 Bit) to [[IRMP_-_english#JVC|JVC]] (16 Bit) when the stop bit premature occured. It is getting difficult when two possible protocols after the detection of the start bit use different codings, e.g. when the one protocol uses a [[IRMP_-_english#Pulse Distance|Pulse Distance Coding]] and the other uses a [[IRMP_-_english#Biphase|Biphase Coding (Manchester)]]. In this case [[IRMP_-_english#top|IRMP]] stores the necessary bits for both codings and releases later the one or the other.&lt;br /&gt;
&lt;br /&gt;
Furthermore some remotes are transmitting in particular protocols for redundance reasons (error detection) or for long key presses repetition frames. These will be discriminated by IRMP: the necessary frames for error detection are checked by IRMP, but not passed to the application. The other will be detected as long key press and flagged by IRMP.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Date: 2018-08-29&lt;br /&gt;
&lt;br /&gt;
Download of stable version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] &amp;amp; [[IRSND_-_english|IRSND]] is also available by SVN: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP in SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP on GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The version in the SVN can be a newer version than the stable version stored in Irmp.zip. In doubt, use the download link of Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see the history of the software changes here: [[IRMP_-_english#Software_History|Software History]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
IRMP is Open Source Software and is released under the [https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GPL v2], or&lt;br /&gt;
(at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The source code can be easily compiled for AVR MCUs by loading the project file irmp.aps in AVR Studio 4.&lt;br /&gt;
&lt;br /&gt;
For other development environments it is simple to create a project or makefile. The source includes:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - IR-decoder core&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - all protocoll definitions&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - target independant definitions for AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include file for the application&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - user configuration&lt;br /&gt;
&lt;br /&gt;
Sample applications (main functions and timer configurations):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR with output on UART&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;Important: include only irmp.h to your application:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other include files are included within irmp.h. See also the sample application irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the preprocessor constant &#039;&#039;&#039;F_CPU in project or makefile&#039;&#039;&#039; must be defined. This should have at least the value of 8000000UL, processor speed should be at least 8 MHz. This applies to AVR targets and not for MCUs with PLL. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] is also running on PIC processors. For the PIC-CCS compiler are already the necessary preprocessor defines set, so that [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be directly used in the CCS environment. Only a short interrupt service routine like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
must be added. The Interrupt period time must be set to 66 µs (15 kHz).&lt;br /&gt;
&lt;br /&gt;
For AVR processors you will find an example for the usage of [[IRMP_-_english#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. The main things are the [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]] initializing of the timer and the processing of received IR commands. The received protocoll, the device address and the command will be output on the HW-UART.&lt;br /&gt;
&lt;br /&gt;
For the Stellaris LM4F120 Launchpad from TI (ARM Cortex M4) is a propriate timer init function already integrated in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used also with STM32 microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Another new implementation is available on the mbed platform.&lt;br /&gt;
=== avr-gcc Optimizations ===&lt;br /&gt;
&lt;br /&gt;
From version avr-gcc 4.7.x the option [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] can be used to make the call of the external function irmp_ISR() from the main ISR more efficent. This improves the performance of the ISR a little.&lt;br /&gt;
&lt;br /&gt;
Add the following compiler- and linker options:&lt;br /&gt;
&lt;br /&gt;
* additional compiler option: -flto&lt;br /&gt;
* additional linker options: -flto -Os&lt;br /&gt;
&lt;br /&gt;
If you forget the additional linker option -Os, the binary will be significant larger as it will no be optimized further. Also the option -flto must be passed to the linker, otherwise the link time optimization will not work.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration of [[IRMP_-_english#top|IRMP]] is done by settings in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] :&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#F_INTERRUPTS|number of interrupts per second]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_SUPPORT_xxx_PROTOCOL|supported IR protocols]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|hardware pin for IR receiver]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_LOGGING|IR logging]]&lt;br /&gt;
&lt;br /&gt;
=== Adjustments in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] will decode all protocols listed above in one ISR. For this, there are some settings necessary. These are set in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h].&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Number of interrupts per second. Should be set to a value from 10000 to 20000. The higher the value, the better the resolution and therefore the quality of detection. But a higher interrupt rate means also higher CPU load. The value of 15000 is in most cases a good compromise.&lt;br /&gt;
&lt;br /&gt;
Standardvalues:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On AVR controllers is a timer1 with 16 bit resolution used in the example [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. If for any reasons timer1 is not available, you can also use timer2 with 8 bit resolution.&lt;br /&gt;
&lt;br /&gt;
In this case timer2 will be configured as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example is valid for ATmega88/ATmega168/ATmega328. For other AVR MCUs check the datasheet.&lt;br /&gt;
&lt;br /&gt;
You must not forget to adjust the ISR for timer2 as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Here you can select which protocols should be supported by [[IRMP_-_english#top|IRMP]]. Standardprotocols are activated by default.&lt;br /&gt;
&lt;br /&gt;
Would you like to turn on more protocols or turn off some other for memory saving reasons, then the corresponding values in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] must be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [[IRMP_-_english#top|IRMP]] supported IR protocol consumes the noted amount of code. Here you can apply optimizations: for example the modulation frequency of 455 kHz for the [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol is far away from the frequencies that are used by other protocols. Maybe you need a different IR receiver, otherwise you could disable these protocols. For example you cannot receive a [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol (455kHz) with a TSOP1738 / TSOP 31238.&lt;br /&gt;
&lt;br /&gt;
Furthermore the protocols [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP_-_english#FDC|FDC]]/[[IRMP_-_english#RCCAR|RCCAR]] are only reliable detected at a frequency starting at 15 kHz. For [[IRMP_-_english#LEGO|LEGO]] it is even 20 kHz. When you want to use these protocols, you must adjust [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]]. Otherwise, during compilation you will get a warning and the corresponding protocols are automatically disabled.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
This constant defines the pin where the IR receiver is connected.&lt;br /&gt;
&lt;br /&gt;
Default value is PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two values must match your hardware configuration.&lt;br /&gt;
&lt;br /&gt;
This applies also to STM32 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the corresponding section for STM8 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PIC controllers there is only the define for &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - depending on compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using ChibiOS HAL, define a pin with the name &#039;&#039;&#039;IR_IN&#039;&#039;&#039; in your board config (board.chcfg) of ChibiOS&lt;br /&gt;
and regenerate the board files. When you want to use another name for the pin, change the constant &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039;&lt;br /&gt;
in irmpconfig.h. Use the name of the pin from the board config and prefix it with &amp;quot;LINE_&amp;quot;, as IRMP is using&lt;br /&gt;
the &amp;quot;line&amp;quot;-variant of the PAL-interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you turn on callbacks, on any level change at the input the callback function is called. This could be use to visualize incoming IR signals by driving another output pin.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normally the irmp_ISR() function is called continuously with the frequency F_INTERRUPTS (10-20kHz). The controller&lt;br /&gt;
can hardly switch to an energy-saving sleep mode, or must constantly wake up from it. If power consumption is important, e.g. for battery operation, this approach is not optimal.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; is activated, IRMP detects if no IR transmission is ongoing and then calls the function &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039;. This is controller-specific and must be provided and linked by the user. The controller can then be put into sleep while there is no ongoing transmission, thus reducing energy consumption.&lt;br /&gt;
&lt;br /&gt;
It is recommended to deactivate the timer interrupt in irmp_idle() and to activate a pinchange interrupt instead. Then the controller can be sent to sleep. If a falling edge is detected on the IR input pin, the pinchange interrupt is deactivated, the timer is activated again and irmp_ISR() is called immediately. You can find an example for the use of irmp_idle() in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
Using IRMP purely with pinchange interrupts and without timer interrupts is not supported.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
When using IRMP with ChibiOS/RT or ChibiOS/NIL, you can use their Event-module to wake a thread as soon as new&lt;br /&gt;
IR data was received and decoded.&lt;br /&gt;
&lt;br /&gt;
Set the &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; constant in irmpconfig.h to 1 to enable this. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definies the&lt;br /&gt;
value in the event bitmask that should symbolize the IRMP event. Use &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; to define&lt;br /&gt;
the variable name of the thread pointer that the event is sent to.&lt;br /&gt;
&lt;br /&gt;
Change irmpconfig.h like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use the event in your ChibiOS-project like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // use data in irmp_data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
With IRMP_LOGGING the logging of received IR frames can be turned on.&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation can be found here: [[IRMP_-_english#Scanning_of_unknown_IR_Protocols|Scanning of unknown IR Protocols]].&lt;br /&gt;
&lt;br /&gt;
=== IRMP in Practice ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] supported protocols use partly variable, partly fixed bit length from 2 up to 48 bits. These will be described by preprocessor defines.&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] separates these IR frames always into 3 sections:&lt;br /&gt;
&lt;br /&gt;
 1. protocol ID&lt;br /&gt;
 2. address or vendorcode&lt;br /&gt;
 3. command&lt;br /&gt;
&lt;br /&gt;
with this function&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
you can recall a decoded message. The return value is 1 when a message has been received, otherwise it is 0. In the first case the struct members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contain valid information.&lt;br /&gt;
&lt;br /&gt;
That means: finally you&#039;ll get simply three values (protocol, address and command) that can be checked with an if or switch statement. &lt;br /&gt;
Here is a sample decoder which checks for key 1-9 on a remote:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are possible constants for irmp_data.protocol, see also [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values of address and the command code of an unknown remote can be received and printed over UART or LCD. Then these values can be used hard coded in your decoder routine. Or you write a teaching routine, where you need to press a key once to store the code in an EEPROM. A sample for this can be found in [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Another [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup example main function] is included in the zip file, showing also the timer initialization.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Debouncing&amp;quot; of Keys ===&lt;br /&gt;
&lt;br /&gt;
To distinguish between long key press or a single press, the bit mask IRMP_FLAG_REPETITION exists. This will be set in struct member &#039;&#039;&#039;flags&#039;&#039;&#039; when a key on the remote is pressed for longer time and therefore the same command is repeated in short periods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // long key press&lt;br /&gt;
      // either:&lt;br /&gt;
      //   ignore the (repeated) key&lt;br /&gt;
      // or:&lt;br /&gt;
      //   use this information for a repeat function&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // key was pressed again&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be used to &amp;quot;debounce&amp;quot; the keys 0-9 by ignoring commands with bit IRMP_FLAG_REPETITION set. For keys like &#039; VOLUME+&#039; or &#039;VOLUME-&#039; using the repetition could be useful, maybe to [[LED-Fading|fade a LED]].&lt;br /&gt;
&lt;br /&gt;
If you want to decode only singe keys, you can reduce the block above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Its a new key&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mode of Operation ==&lt;br /&gt;
&lt;br /&gt;
The  &amp;quot;Working Horse&amp;quot; of [[IRMP_-_english#top|IRMP]] is the interrupt service routine irmp_ISR() which should be called 15000 times per second. Is this rate different, the constant [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] needs to be adjusted.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detects first the length and the form of the startbit(s) and determines the used protocols by this information. As soon as the protocol was identified, the further bits are parameterized to read the following bits most efficient until the IR command is complete.&lt;br /&gt;
&lt;br /&gt;
Just to stop slashers:&lt;br /&gt;
&lt;br /&gt;
I know that the ISR is quite large. But as it acts as a state machine, the effective executed code per cycle is relative small. While it is &amp;quot;dark&amp;quot; (and that is the case for the most time ;-)) the spent time is vanishing short. In the WordClock project for example are called 8 ISR&#039;s with the same timer, there is irmp_ISR() only one amongst many others. For at least 8 MHz CPU clock no timing problems occured. Therefor I see really no problem in the length of the ISR.&lt;br /&gt;
&lt;br /&gt;
A crystal is not a neccessary must, it works well with the internal AVR oscillator. Remember to set the correct fuses for the CPU to run at 8 MHz, check [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] for correct values for an ATMEGA88.&lt;br /&gt;
&lt;br /&gt;
== Scanning of unknown IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
Changing in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the value for [[IRMP_-_english#IRMP_LOGGING|IRMP_LOGGING]] to 1, then a logging in [[IRMP_-_english#top|IRMP]] will be turned on: the bright- and darkphases will be sent via UART with 9600 bit/s: 1=dark, 0=bright. Maybe the constans in the functions uart_init() and uart_putc() must be adjusted, this depends on the used AVR MCU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark: for PIC-processors there is an own logging module named [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. This makes it possible to log via USB. This applies not to the AVR version&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you record these protocol scans with a terminal program and save them as a textfile, you can use these files for analyzing the frames in ordner to add a yet unknown protocol to [[IRMP_-_english#top|IRMP]] - see next chapter.&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that is not supported by [[IRMP_-_english#top|IRMP]] you can send me ([http://www.mikrocontroller.net/user/show/ukw ukw]) the scan files. Then I can check if the protocol fits into the IRMP concepts and adapt the sources if applicable.&lt;br /&gt;
&lt;br /&gt;
== IRMP under Linux and Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be compiled under Linux for testing IR scans in textfiles. In the subdirectory &#039;IR-Data&#039; you will find such files that you can use as input files for [[IRMP_-_english#top|IRMP]].&lt;br /&gt;
&lt;br /&gt;
The compilation of [[IRMP_-_english#top|IRMP]] is started by:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
This will generate 3 IRMP versions:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version for 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version for 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version for 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Starting IRMP ===&lt;br /&gt;
&lt;br /&gt;
The calling syntax is:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
The given options are exclusive, that means only one option per call is valid:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             print a list with pulses and pauses&lt;br /&gt;
   -a analyze           analyse the puls/pauses and write a &amp;quot;spectrum&amp;quot; in ASCII format&lt;br /&gt;
   -v verbose           verbose output&lt;br /&gt;
   -p  Print Timings    print a timing table for all protocols&lt;br /&gt;
&lt;br /&gt;
Samples:&lt;br /&gt;
&lt;br /&gt;
=== Normal Output ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output Lists ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analysing ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you see the measured times of all pulses and pauses as (horizontal) bell shaped curves, which of course are not quite ideal displayed due to the ASCII formatting. The smaller the measured channels, the better is the timing of the remote.&lt;br /&gt;
&lt;br /&gt;
The above output can be read as:&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pulse length between 9000 and 9200 µs, in average 9102 µs. The deviation from this average is about 1.1 %&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pause length between 4300 and 4500 µs, the average is 4424 µs. The error is about 2.8 %.&lt;br /&gt;
&lt;br /&gt;
* the pulse length of a databit is between 500 and 700 µs, in average 650 µs, the error is (quite large!) 23.1 %&lt;br /&gt;
&lt;br /&gt;
Further there are two more pauses with different length (for bits 0 and 1). Checking this I leave to the willing reader ;-)&lt;br /&gt;
&lt;br /&gt;
=== Verbose Output ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting under Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used as well under Windows, like:&lt;br /&gt;
&lt;br /&gt;
* start command line console&lt;br /&gt;
* change to directory &#039;irmp&#039;&lt;br /&gt;
* enter:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
The same options apply as for the Linux version.&lt;br /&gt;
&lt;br /&gt;
=== Long Outputs ===&lt;br /&gt;
&lt;br /&gt;
As some outputs are pretty large, it is recommended to redirect the output to a file or filter for paging:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Remote Controls ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protocol || Name || Device || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports more and more also camera remotes like:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
The command variety isn&#039;t really large. Usually the cameras understand only the command:&lt;br /&gt;
&amp;quot;Trigger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is a short table for [[IRMP_-_english#PENTAX|PENTAX]] cameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Command || Function&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Trigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || change Zoomlevel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because there is no address designated in the [[IRMP_-_english#PENTAX|PENTAX]]-protocol, this should be set for sending in [[IRSND_-_english|IRSND]] to 0x0000. You should also use a crystal in this case because especially the Nikons are very fussy regarding the timing.&lt;br /&gt;
&lt;br /&gt;
== IR Keyboards ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]]  supports from version 1.7.0 also IR keyboards, namely the FDC-3402 &amp;lt;s&amp;gt; from www.pollin.de (partno. 711 056) for less than 2 Euro.&amp;lt;/s&amp;gt; (not available as of 19.09.2017 )&lt;br /&gt;
&lt;br /&gt;
On detection of a key press the following data is returned:&lt;br /&gt;
&lt;br /&gt;
 Protocol-Number  (irmp_data.protocol): 18&lt;br /&gt;
 Address          (irmp_data.address) : 0x003F&lt;br /&gt;
&lt;br /&gt;
As command (irmp_data.command) the following values are returned:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special keys left side:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above values are for pressing a key. On release,  [[IRMP_-_english#top|IRMP]] sets also Bit 8 (0x80) in the command.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F&lt;br /&gt;
&lt;br /&gt;
Exception for the ON / OFF key: This one sends only for key press a code, not for release.&lt;br /&gt;
&lt;br /&gt;
Is a key pressed for a longer time, it will be notified in irmp_data.flag&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x00&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When key combinations (like a capital &#039;A&#039;) are pressed, then the return values are a sequence like this:&lt;br /&gt;
&lt;br /&gt;
      Left SHIFT-key pressed:    0x0002&lt;br /&gt;
      Key &#039;a&#039; pressed:           0x001F&lt;br /&gt;
      Key &#039;a&#039; released:          0x009F&lt;br /&gt;
      Left SHIFT-key released:   0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] you will find a function get_fdc_key() for the Linux version, which can be used as a template to convert the FDC keycodes into the corresponding ASCII codes. This function can be used either local on the MCU to decode the keycodes, or on the hostsystem (e.g. PC) where the IRMP data structure is sent to. Therefore the function incl. preprocessor constands should be copied to your application code.&lt;br /&gt;
&lt;br /&gt;
Here is an excerpt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
 &lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And at least an example for the usage of function get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All non-printable characters are coded as:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Key               || Constant                || Value&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menu              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Back              || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Forward           || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adress            || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Window            || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Page           || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| New Page          || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Font              || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Print             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| On/Off            || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Insert            || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Delete            || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| End               || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor right      || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor down       || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Page up           || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Page down         || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Left Mousebutton  || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Right Mousebutton || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The function get_fdc_key() considers the holding of key pressed of Shift-, Ctrl- and ALT. For this reason not only the writing of capital letters works, but also the selection of special characters with the key combination ALT + key, e.g. ALT + m -&amp;gt; µ or ALT + q -&amp;gt; @. Also you can send CTRL-A to CTRL-Z by using the Ctrl key. The Caps Lock key is ignored, as I regard this key as the most unnecessary key at all ;-)&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== IR Protocols in Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC Protocol|NEC + extended NEC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data NEC || 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data ext. NEC || 16 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 9000µs pulse, 2250µs pause, 560µs pulse, ~100ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC16 Protocol (JVC)|JVC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 12 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause, 6000µs pause if keyboard repetition&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 8 address bits + 1 sync bit + 8 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 560µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 42 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 address bits + 13 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 110ms (beginning from start bit), 9000µs pulse, 2250µs pause, 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#ACP24 Protocol|ACP24]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 70 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 70 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 390µs pulse, 950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 390µs pulse,  950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 390µs pulse, 13000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 390µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LGAIR Protocol|LGAIR]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 28 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 16 command bits + 4 checksum bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first (&#039;&#039;&#039;differing&#039;&#039;&#039; to [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SAMSUNG Protocol|SAMSUNG]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data(1) bits + 1 sync bit + 20 data(2)-bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data(1) || 16 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data(2) || 4 ID bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || repetition after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || Repetition after approx. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 32 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 8 Bits + 8 inverted Bits + 8 Bits + 8 inverted Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || one after approx. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 45 msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#MATSUHITA Protocol|MATSUSHITA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 customer bits + 6 command bits + 12 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 22 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 11 command bits + 11 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#KASEIKYO_Protocol_.28.22Japan Protocol.22.29|KASEIKYO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 customer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 ID bits + 8 parity bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3380µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 423µs pulse,  423µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 423µs pulse, 1269µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 423µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 80ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start Bits + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 3 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80EXT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 4 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 3637µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Denon Protocol|DENON]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (in practice, theoretically: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 5 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 6 data bits + 2 extension bits + 2 data construction bits (normal: 00, inverted: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || no Start Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse, 775µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 310µs pulse, 1780µs pause (in practice, theoretically: 275µs pulse, 1900µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 310µs pulse (310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse)&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || after 65ms with inverted command bits (data construction bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || both frames after 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 11100000 + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1060µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  437µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 start bits + 16 data bits + 1 trailer bit + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 1 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 2 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 3 || 200µs pulse, 15425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 4 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 200µs pulse, 9175µs pause&lt;br /&gt;
|-&lt;br /&gt;
| R Bit || 200µs pulse, 6050µs pause, repeats the last bit&lt;br /&gt;
|-&lt;br /&gt;
| Trailer Bit || 200µs pulse, 12300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 200µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 40 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 12 x 0 Bits + 4 press/release bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2085µs pulse, 966µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 300µs pulse,  220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 300µs pulse, 715µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 300µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Press Key || press/release bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Release Key || press/release bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of approx. 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 2 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 2 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse,  1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 3500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 56 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 24 bits (010000000000010000000001) + 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3600µs pulse, 1600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 565µs pulse,  316µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 565µs pulse, 1140µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 565µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 6 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 1000µs pulse,  1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1000µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 1000µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 210µs pulse, 6218µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pulse,  1400µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 12 command bits + 4 crc bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 1026µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse,  263µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 553µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#VINCENT|VINCENT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 8 command bits + 8 repeated command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2500µs pulse, 4600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1540µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 13 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse,  900µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 450µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RCMM_Protocol|RCMM]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 start bit + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM32 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM24 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM12 || 4 address bits (= 2 mode bits + 2 device bits) + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 500µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 00 Bits || 230µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 01 Bits || 230µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 10 Bits || 230µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 11 Bits || 230µs pulse, 720µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 230µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SIRCS_Protocol|SIRCS]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequency ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 12-20 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 7 command bits + 5 address bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1200µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || twice after approx. 25ms, that means: 2nd und 3rd Frame&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || starting with 4th identical frame, distance approx. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse distance Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse, 1300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th etc. indentical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
This protocol is very similar to [[IRMP_-_english#NUBERT|NUBERT]], but here it will be sent only one frame. Additionally there are 11 instead of 10 data bits and no stop bit. The pause time between frame repetitions is substantial lower.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 11 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 380µs pulse, 1280µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 6,6ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1250µs pulse, 440µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 440µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after approx. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th ... identical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 7 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 930µs pulse, 2790µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 3 times after 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC5 and RC5x Protocol|RC5 + RC5X]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start Bits + 12 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5 || 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 start bit + 13 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5X || 1 inverteds command bit + 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 data bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 14 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 inverteds command bit + 1 toggle bit + 5 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC6 and RC6A Protocol|RC6 + RC6A]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (000) + 1 toggle bit + 16 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (110) + 1 toggle bit + 31 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6 || 8 address bits + 8 Command Bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A || &amp;quot;1&amp;quot; + 14 customer bits + 8 system bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 mode bits (&amp;quot;110&amp;quot;) + 1 toggle bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 toggle(!) + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2666µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 444µs pause, 444µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 444µs pulse, 444µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Grundig Protocol|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms pause + N Info-Frames + 117,76ms pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 pre bit + 1 start bit + 9 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Grundig || 9 command bits + 0 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Nokia || 8 command bits + 8 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#IR60_.28SDA2008_and_MC14497P.29|IR60]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 start bit + 101111 + 0 stop bits + 22ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Data Frame || 1 start bit + 7 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz? (Merlin-Tastatur mit Ruwido protocol: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 start bit + 22 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 start bit + 17 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Siemens || 11 address bits + 10 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Data Ruwido || 9 address bits + 7 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 275µs pause, 275µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once with repeat bit set (?)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 16 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 250µs pulse, 150µs + 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 250µs pulse, 150µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetric&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 210µs pulse, 210µs + 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 210µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 address bits + 2 special bits +  6 command bits + 4 special bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pause, 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 2 additinal frames with special bits set&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || only repetition of the 2nd frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protocols ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 3 address bits + 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 800µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Length || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes of IRMP in 3.0.x ===&lt;br /&gt;
Version 3.1.1:&lt;br /&gt;
&lt;br /&gt;
* 2018-08-30: New option: IRMP_USE_IDLE_CALL&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 2018-08-29: Port to ChibiOS&lt;br /&gt;
* 2018-08-29: New protocol: GREE&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 2018-02-19: corrected handling of irmp_flags for invalid frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 2017-08-25: New protocol: IRMP16 for transparent 16 bit data communication&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 2016-11-18: Corrected buffer overflow in irmp-main-avr-uart.c&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-19: New protocol [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-09: New protocol [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (air conditioner)]]&lt;br /&gt;
* 2016-09-09: Some modifications for Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 2016-01-16: Some corrections of port to ESP8266&lt;br /&gt;
* 2016-01-16: Added port to MBED&lt;br /&gt;
* 2016-01-16: Added several hardware dependent example main source files&lt;br /&gt;
&lt;br /&gt;
=== Older Versions ===&lt;br /&gt;
&lt;br /&gt;
* 2015-11-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 2015-11-17: Port to ESP8266&lt;br /&gt;
* 2015-11-17: Port to Teensy (3.x)&lt;br /&gt;
* 2015-11-10: Added support for STM8 microcontroller&lt;br /&gt;
* 2015-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
* 2015-06-15: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ACP24|ACP24]]&lt;br /&gt;
* 2015-05-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#S100|S100]]&lt;br /&gt;
* 2015-05-29: Some smaller corrections&lt;br /&gt;
* 2015-05-28: Added Logging for XMega&lt;br /&gt;
* 2015-05-28: Timing corrections  for FAN protocol&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#MERLIN|MERLIN]]&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FAN|FAN]]&lt;br /&gt;
* 2015-05-18: Added F_CPU macro for STM32L1XX&lt;br /&gt;
* 2015-05-18: Some corrections for XMega port&lt;br /&gt;
* 2015-04-23: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* 2015-04-23: Port to AVR XMega&lt;br /&gt;
* 2014-09-19: Bugfix: added missing newline before #else&lt;br /&gt;
* 2014-09-18: Added logging for ARM STM32F10X&lt;br /&gt;
* 2014-09-17: Corrected PROGMEM access to array irmp_protocol_names[].&lt;br /&gt;
* 2014-09-15: Changed timing tolerances for [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol&lt;br /&gt;
* 2014-09-15: Moved  irmp_protocol_names to flash, additional UART routines in irmp-main-avr-uart.c&lt;br /&gt;
* 2014-07-21: Port to PIC 12F1840&lt;br /&gt;
* 2014-07-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 2014-07-09: Some small corrections&lt;br /&gt;
* 2014-07-01: Added logging for ARM_STM32F4XX&lt;br /&gt;
* 2014-07-01: IRMP port for PIC XC8 compiler, removed variadic macros because of stupid XC8 compiler :-(&lt;br /&gt;
* 2014-06-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LGAIR|LGAIR]]&lt;br /&gt;
* 2014-05-30: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SPEAKER|SPEAKER]]&lt;br /&gt;
* 2014-05-30: Optimized timings for [[IRMP_-_english#SAMSUNG|SAMSUNG]] protocol&lt;br /&gt;
* 2014-02-20: Corrected decoding of [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2014-02-19: &#039;&#039;&#039;New protocols&#039;&#039;&#039;: [[IRMP_-_english#RCMM|RCMM32, RCMM24 and RCMM12]]&lt;br /&gt;
* 2014-09-17: Optimized timing for [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: Optimized detection of [[IRMP_-_english#ORTEK|ORTEK (Hama)]] frames&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 2013-03-12: Changed timing tolerancies for [[IRMP_-_english#RECS80|RECS80]]- and  [[IRMP_-_english#RECS80EXT|RECS80EXT]] protocol&lt;br /&gt;
* 2013-01-21: Corrected detection of repetition frame beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2013-01-17: Corrected frame detection beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-12-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 2012-12-07: Improved detection von [[IRMP_-_english#DENON|DENON]] repetition frame&lt;br /&gt;
* 2012-11-19: Port to Stellaris LM4F120 TI Launchpad (ARM Cortex M4)&lt;br /&gt;
* 2012-11-06: Corrected [[IRMP_-_english#DENON|DENON]] frame detection&lt;br /&gt;
* 2012-10-26: Some timer corrections and adaptations for Arduino&lt;br /&gt;
* 2012-07-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#BOSE|BOSE]]&lt;br /&gt;
* 2012-06-18: Added support for ATtiny87/167&lt;br /&gt;
* 2012-06-05: Some smaller corrections of port to ARM STM32&lt;br /&gt;
* 2012-06-05: Correction of include in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 2012-06-05: Bugfix, if only [[IRMP_-_english#NEC_+_extended_NEC|NEC]] and [[IRMP_-_english#NEC42|NEC42]] activated&lt;br /&gt;
* 2012-05-23: Port to ARM STM32&lt;br /&gt;
* 2012-05-23: Bugfix frame detection for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-02-27: Bugfix in IR60-Decoder&lt;br /&gt;
* 2012-02-27: Bugfix in CRC calculation of  [[IRMP_-_english#KASEIKYO|KASEIKYO]] frames&lt;br /&gt;
* 2012-02-27: Port to C18 Compiler for PIC microcontrollers&lt;br /&gt;
* 2012-02-13: Bugfix: most significant bit in Address wrong in [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol, if [[IRMP_-_english#NEC42|NEC42]] protocol activated, too&lt;br /&gt;
* 2012-02-13: Corrected timing of [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol&lt;br /&gt;
* 2012-02-13: [[IRMP_-_english#KASEIKYO|KASEIKYO]]: Genre2 bits will be now stored in upper nibble of flags&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#KATHREIN|KATHREIN]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#THOMSON|THOMSON]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LEGO|LEGO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC16|NEC16]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC42|NEC42]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NETBOX|NETBOX]]&lt;br /&gt;
* 2011-09-20: Port to ATtiny84 and ATtiny85&lt;br /&gt;
* 2011-09-20: Improved key repetition detection in [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
* 2011-09-20: Improved decoding of [[IRMP_-_english#Biphase|Biphase]] protocols&lt;br /&gt;
* 2011-09-20: Fixed some smaller bugs in [[IRMP_-_english#RECS80|RECS80]] decoder&lt;br /&gt;
* 2011-09-20: Corrected detection of additional bits in SIRCS protocol&lt;br /&gt;
* 2011-01-18: Some corrections for [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2011-01-18: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
* 2011-01-18: [[IRMP_-_english#SIRCS|SIRCS]]: additional bits (&amp;gt;12) will be stored in address&lt;br /&gt;
* 2011-01-18: Some timing corrections for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-09-04: Bugfix for F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 2010-09-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 2010-08-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#JVC|JVC]]&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: genre bits will be now stored&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: Improved handling of repetition frames&lt;br /&gt;
* 2010-08-29: Improved support of [[IRMP_-_english#APPLE|APPLE]] protocols.&lt;br /&gt;
&lt;br /&gt;
* 2010-07-01: Bugfix: added a timeout for [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames. This avoids &#039;ghost commands&#039;.&lt;br /&gt;
&lt;br /&gt;
* 2010-06-26: Bugfix: deactivated [[IRMP_-_english#RECS80|RECS80]], [[IRMP_-_english#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] if interrupts frequency is low&lt;br /&gt;
&lt;br /&gt;
* 2010-06-25: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RCCAR|RCCAR]]&lt;br /&gt;
* 2010-06-25: Extended keyboard detection for [[IRMP_-_english#FDC|FDC]] protocol (IR keyboard)&lt;br /&gt;
* 2010-06-25: Interrupt frequency now up to 20kHz possible&lt;br /&gt;
&lt;br /&gt;
* 2010-06-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 2010-06-09: Corrected timing for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-06-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 2010-05-26: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 2010-05-26: Bugfix: detection of long keyboard press for [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-05-17: Bugfix [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol: corrected command bit mask&lt;br /&gt;
&lt;br /&gt;
* 2010-05-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 2010-05-16: Improved handling of automatic frame repetitions for [[IRMP_-_english#SIRCS|SIRCS]]-, [[IRMP_-_english#SAMSUNG32|SAMSUNG32]]-, and [[IRMP_-_english#NUBERT|NUBERT]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-04-28: Only some cosmetic code optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-04-16: Improved all timing tolerancies&lt;br /&gt;
&lt;br /&gt;
* 2010-04-12: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-29: Bugfix: detection of multiple [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
* 2010-03-29: Moved configuration data to  [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h]&lt;br /&gt;
* 2010-03-29: Introduced a program version in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 2010-03-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-16: Correction of RECS80 start bit timings&lt;br /&gt;
* 2010-03-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-15: Some optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-03-14: Port to PIC&lt;br /&gt;
&lt;br /&gt;
* 2010-03-11: Some adjustements for some ATMegas&lt;br /&gt;
&lt;br /&gt;
* 2010-03-07: Bugfix: Reset of state machine after a incomplete [[IRMP_-_english#RC5_+_RC5X|RC5]] frame&lt;br /&gt;
&lt;br /&gt;
* 2010-03-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#APPLE|APPLE]]&lt;br /&gt;
* 2010-03-05: Data  irmp_data.addr + irmp_data.command will be now stored in the bit order of the appropriate protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-03-04: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP_-_english#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol)&lt;br /&gt;
* 2010-03-04: Changed some timer tolerances changes of [[IRMP_-_english#SIRCS|SIRCS]]- and [[IRMP_-_english#KASEIKYO|KASEIKYO]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: corrected detection and suppression of automatic frame repetitions&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: device ID bits will be now stored in irmp_data.command (not irmp_data.address anymore)&lt;br /&gt;
* 2010-03-02: Enlargement of scan buffers (for logging)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-24: New variable flags in IRMP_DATA for detection of long key press&lt;br /&gt;
&lt;br /&gt;
* 2010-02-20: Bugfix [[IRMP_-_english#DENON|DENON]] protocol: repetition frame is now basically inverted&lt;br /&gt;
&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol-Varianten, z.&amp;amp;nbsp;B. [[IRMP_-_english#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#RC6_+_RC6A|RC6]]- and [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2010-02-19: Some improvements for [[IRMP_-_english#RC5_+_RC5X|RC5]] decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-13: Bugfix: Puls/Pause counters were 1 too low, now better detection of protokols with very short pulses&lt;br /&gt;
* 2010-02-13: Improved detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
&lt;br /&gt;
* 2010-02-12: New: [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-02-05: Eliminated a conflict between [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-01-07: First version&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
=== IR Abstract ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4&lt;br /&gt;
&lt;br /&gt;
=== SIRCS Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24 Protocol ===&lt;br /&gt;
&lt;br /&gt;
The ACP24-Protocol is used by Stiebel-Eltron-Aircons&lt;br /&gt;
&lt;br /&gt;
The structure of the 70 databits is :&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
These are converted into the following 16 bits from irmp_data.command:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Meaning of the symbols:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperature + 15 degree&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 degree&lt;br /&gt;
            0100        19 degree&lt;br /&gt;
            0101        20 degree&lt;br /&gt;
            0110        21 degree&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 degree&lt;br /&gt;
&lt;br /&gt;
    N    = Nightmode&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    VV   = fan, v must be 1!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      level 1&lt;br /&gt;
            01   1      level 2&lt;br /&gt;
            10   1      level 3&lt;br /&gt;
            11   1      Automatic&lt;br /&gt;
&lt;br /&gt;
    MMM  = Mode&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      turn off&lt;br /&gt;
            001  0      turn on&lt;br /&gt;
            001  1      cooling&lt;br /&gt;
            010  1      fan&lt;br /&gt;
            011  1      demist&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatic-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
To control the air con via [[IRSND_-_english|IRSND]], the following functions can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR Protocol ===&lt;br /&gt;
&lt;br /&gt;
The LG Air Con is controlled by an &#039;intelligent&#039; remote. These are the encoded data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Command                 AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16 Protocol (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG Protocol ===&lt;br /&gt;
&lt;br /&gt;
(was reverse engineered by several protocols (Daewoo or similar), so no direkt link to SAMSUNG documents is available)&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Daewoo-protocol, which uses the same principle of the sync-bits in the center of a frame, but words with different timings:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO Protocol (&amp;quot;Japan Protocol&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80 and RECS80 Extended Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5 and RC5x Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 and RC6A Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 and MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Other Protocols ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP on Youtube ==&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
== Other Artikels ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Infrared sender und receiver controlled via ip network with Android smartphone as remote control:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR Tester ===&lt;br /&gt;
&lt;br /&gt;
IR tester with LCD by Klaus Leidinger:&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller-projekte.de/Mikrocontroller/index.html&lt;br /&gt;
&lt;br /&gt;
=== IR Tester with AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
IR tester for Pollin AVR-NET-IO with Pollin ADD-ON Board:&lt;br /&gt;
&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR remote receiver by Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Receiver/Sender/Switch with Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR switch based on USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo controlled IR Sender ===&lt;br /&gt;
&lt;br /&gt;
Servo controlled IR Sender (adaptive) by Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Adaptive IR Remote Control ===&lt;br /&gt;
&lt;br /&gt;
Adaptive IR remote control by Robert and Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight by Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
STM8 Moodlight by Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity Mirror LED Ceiling Lamp ===&lt;br /&gt;
&lt;br /&gt;
Infinity Mirror LED ceiling lamp with remote control by Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Cinema Control ===&lt;br /&gt;
&lt;br /&gt;
Cinema control by Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Leading-Edge Control ===&lt;br /&gt;
&lt;br /&gt;
leading-edge control:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit as coffee bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino as IR Receiver ===&lt;br /&gt;
&lt;br /&gt;
Arduino as IR Receiver:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR Volume Control with Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
volume control with Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Shutdown RaspPI with IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP under RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED strip remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, a modular Firmware for AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind solver with LED stripes and IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control with ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library for STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP on STM32 - Construction Guidance ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Seminar Paper - Extension of Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Acknowledgment ==&lt;br /&gt;
&lt;br /&gt;
I thank Vlad Tepesch, Klaus Leidinger, Peter K., and Dániel Körmendi, who sent me many scan files of their IR remote controls.&lt;br /&gt;
&lt;br /&gt;
I thank Christian F. for his tipps relating to the port to PIC MCUs, gera for the port to PIC-C18 compiler, kichi (Michael K.) for the port to ARM STM32, Markus Schuster for the port to TI&#039;s Stellaris LM4F120 Launchpad (ARM Cortex M4), Matthias Frank for the port to XMega, Wolfgang S. for the port to ESP8266, Achill Hasler for the port to Teensy, Axel Schwenke for the port to STM8.&lt;br /&gt;
&lt;br /&gt;
Thanks to Dániel Körmendi, who added the LG-AIR protocol to [[IRSND_-_english|IRSND]]. Thanks to Ulrich v.d. Kammer for the Pentax protocol extension in [[IRSND_-_english|IRSND]].&lt;br /&gt;
&lt;br /&gt;
At least I will thank Jojo S. for his great job translating this documentation!&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
You can discuss IRMP &amp;amp; IRSND in the german thread [http://www.mikrocontroller.net/topic/162119 Infrared Multi Protocol Decoder].&lt;br /&gt;
&lt;br /&gt;
Have fun with IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99613</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99613"/>
		<updated>2018-09-01T12:20:12Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Information zur Lizenz hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Stand vom 29.08.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lizenz ==&lt;br /&gt;
&lt;br /&gt;
IRMP ist Open Source Software und wird unter der [https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GPL v2] (oder jeder höheren Version) freigegeben.&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei ChibiOS HAL definiert man in der Board-Config (board.chcfg) von ChibiOS einen Pin mit dem Namen &#039;&#039;&#039;IR_IN&#039;&#039;&#039; und generiert die Boarddatei neu. Wenn man einen anderen Namen für den Pin verwenden möchte, kann man auch die Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; &lt;br /&gt;
in der irmpconfig.h anpassen. Vor den Namen des Pins aus der Board-Config dann &amp;quot;LINE_&amp;quot; voranstellen, da in IRMP die &lt;br /&gt;
&amp;quot;Line&amp;quot;-Variante der PAL-Schnittstelle verwendet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird die Funktion irmp_ISR() ständig mit der Frequenz F_INTERRUPTS (10-20kHz) aufgerufen. Der Controller&lt;br /&gt;
kann daher kaum in einen energiesparenden Sleep-Modus wechseln, bzw. muss ständig aus diesem wieder aufwachen. Kommt&lt;br /&gt;
es auf den Stromverbrauch an, wie z.B. bei Batteriebetrieb, ist diese Vorgehensweise nicht optimal.&lt;br /&gt;
&lt;br /&gt;
Wenn man &#039;&#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; aktiviert, erkennt IRMP wenn kein IR-Empfang im Gange ist und ruft dann die Funktion &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039; auf. Diese ist controllerspezifisch und muss vom Nutzer bereitgestellt und hinzugelinkt werden. Dort kann dann in den Empfangspausen der Controller schlafen gelegt und so der Energieverbrauch reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Empfohlen wird in der irmp_idle() den Timer-Interrupt zu deaktivieren und statt dessen einen Pinchange-Interrupt zu aktivieren.  Danach kann der Controller schlafen geschickt werden. Wird eine fallende Flanke auf dem IR-Eingang erkannt, wird der Pinchange-Interrupt deaktiviert, der Timer wieder aktiviert und sofort irmp_ISR() aufgerufen. Ein Beispiel für die Verwendung von irmp_idle() findet sich in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
IRMP rein anhand von Pinchange-Interrupts und ohne Timer-Interrupts zu betreiben ist nicht vorgesehen.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
Wenn man IRMP zusammen mit ChibiOS/RT oder ChibiOS/NIL verwendet, kann man deren Event-System verwenden um einen&lt;br /&gt;
Thread aufzuwecken sobald neue IR-Daten empfangen und decodiert wurden.&lt;br /&gt;
&lt;br /&gt;
Dazu setzt man in der irmpconfig.h die Konstante &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; auf 1. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definiert den&lt;br /&gt;
Bitwert in der Event-Bitmaske, der den IRMP-Event symbolisieren soll. Mit &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; wird der&lt;br /&gt;
Variablenname des Threadpointers festgelegt, an den der Event gesendet wird.&lt;br /&gt;
&lt;br /&gt;
In der irmpconfig.h sieht das in der Praxis so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In seinem ChibiOS-Projekt verwendet man das dann so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // Daten aus irmp_data verwenden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.1.1:&lt;br /&gt;
&lt;br /&gt;
* 30.08.2018: Neue Option: IRMP_USE_IDLE_CALL&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 29.08.2018: Portierung auf ChibiOS&lt;br /&gt;
* 29.08.2018: Neues Protokoll: GREE&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99609</id>
		<title>IRMP - english</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99609"/>
		<updated>2018-08-30T13:59:11Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Version 3.1.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the English translation of the [[IRMP#top|german IRMP documentation]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
Project Intention:&lt;br /&gt;
&lt;br /&gt;
Because RC5 isn&#039;t only outdated, today its already obsolete and because more and more electronic devices in consumer electronics around us are used, it is time to develop an IR-decoder that can &#039;understand&#039; about 90 % of IR-remotes that are used in our daily life.&lt;br /&gt;
&lt;br /&gt;
This article indroduces &#039;IRMP&#039; as &amp;quot;Infrared-Multiprotocol-Decoder&amp;quot; in all details. The counterpart, [[IRSND_-_english|IRSND]] as IR-Encoder can be found in this [[IRSND_-_english|document]].&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrared Multiprotocol Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Connection of a IR receiver module to MCU]]&lt;br /&gt;
&lt;br /&gt;
=== Supported MCUs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] has been implemented on several MCU families:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- and XC8/C18 compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (tested on STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (tested on STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several ARM-Cortex-µCs, for Example STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Officially supported µC-Series]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports More µC-Series, community supported]&lt;br /&gt;
&lt;br /&gt;
=== Supported IR Protocols ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] - the infrared remote decoder, which can decode several protocols at once, is capable of decoding the following protocols (in alphabetic order):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;supported protocols&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protocol || Vendor&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FAN|FAN]] || FAN, remote for fans&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, e.g. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]] || various european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon and other japanese vendors which are members of the  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner &#039;&#039;&#039;(NEW!)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MERLIN|MERLIN]]  || MERLIN remote (Pollin article number: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName and many more asian vendors.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NUBERT|NUBERT]] || Nubert, e.g. Subwoofer Systems&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PANASONIC|PANASONIC]] || PANASONIC Beamer (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PENTAX|PENTAX]] || PENTAX (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6A]] || Philips, Kathrein and others, e.g. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCCAR|RCCAR]] || RC Car: IR remote for RC toys &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCMM|RCMM]] || Fujitsu-Siemens e.g. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ROOMBA|ROOMBA]] || iRobot Roomba vacuum cleaner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#S100|S100]] || similar to RC5, but 14 instead of 13 Bits and 56kHz modulation. vendor unknown.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG48|SAMSUNG48]] || various air conditions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (e.g. T-Home-Mediareceiver, MERLIN-keyboard(Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SPEAKER|SPEAKER]] || Speaker Systems like X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#VINCENT|VINCENT]] || Vincent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of these protocols can be activated separately. If you want, you can activate all protocols. If you need only one protocol, you can disable all others. It will only be compiled the code that has been selected by the user.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] source for the AVR and PIC MCUs has been created as part of the [[Word Clock]] project.&lt;br /&gt;
&lt;br /&gt;
=== Thread in Forum ===&lt;br /&gt;
&lt;br /&gt;
Intention for an own IRMP article is the following thread in Projects&amp;amp;Code [http://www.mikrocontroller.net/topic/162119 IRMP - Infrared Multi Protocol Decoder] (in german language).&lt;br /&gt;
&lt;br /&gt;
== IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC protocol, RGB remote control, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Some vendors use their own proprietary protocol, such as Sony, Samsung and Matsuhita. Philips has developed [[IRMP_-_english#RC5 + RC5X|RC5]] and of course used for own purposes.&lt;br /&gt;
[[IRMP_-_english#RC5 + RC5X|RC5]] was seen in Europe as &#039;&#039;that&#039;&#039; standard IR-protocol which was adopted by many european vendors. Nowadays is [[IRMP_-_english#RC5 + RC5X|RC5]] nearly nowhere used - it can be ticked as &amp;quot;dead&amp;quot;. Although the successor [[IRMP_-_english#RC6_+_RC6A|RC6]] is used in actual european hardware, it is also used rarely.&lt;br /&gt;
&lt;br /&gt;
Also japanese vendors tried to establish an own standard, the so called [[IRMP_-_english#KASEIKYO|Kaseikyo]]- (or also &amp;quot;Japan-&amp;quot;) protocol. This is with a bitlength of 48 bits more versatile. But it has no general acceptance until today - even if you find it in some appliances.&lt;br /&gt;
&lt;br /&gt;
Nowadays the [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol is used (also mainly in japanese devices) - indeed in various premium and NoName products. I estimate the market share to 80 % for the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-protocol. Nearly all remotes in my daily use utilize the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-IR-Code. This starts at the TV-set, goes over the DVD-player to the Notebook remote and reaches up to NoName-Multimedaia-Harddrive, just to mention a few samples.&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports the following IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance|Pulse Distance]], typ. Example: [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Width|Pulse Width]], typ. Example: [[IRMP_-_english#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP_-_english#Biphase|Biphase (Manchester)]], typ. Example: Philips [[IRMP_-_english#RC5_+_RC5X|RC5]], [[IRMP_-_english#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Position|Pulse Position (NRZ)]], typ. Example: [[IRMP_-_english#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance Width|Pulse Distance Width]], typ. Example: [[IRMP_-_english#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
The pulses are modulated - usually with 36 kHz or 38 kHz - to reduce environment influences such as Indoorlightning or sunlight.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Distance Coding can be discovered by the following rule:&lt;br /&gt;
&lt;br /&gt;
* there is only &#039;&#039;&#039;one pulse length&#039;&#039;&#039; and there are &#039;&#039;&#039;two different pause lengths&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Width Coding can be discovered by the following rule: &lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;only one pause length&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
This is a mix from Pulse Distance and Pulse Width Coding, so:&lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;two different pause lengths.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
In Biphase Coding the order of pulse and pause gives the bit value.&lt;br /&gt;
Therefore a Biphase-Coding can be discovered by this criteria:&lt;br /&gt;
&lt;br /&gt;
* there is exactly &#039;&#039;&#039;one&#039;&#039;&#039; pause- and one pulse length, as well as the &#039;&#039;&#039;double&#039;&#039;&#039; pulse/pause length&lt;br /&gt;
&lt;br /&gt;
Usually the length for the pulse and pause are equal, that means the signal shape is symmetric. But IRMP knows also protocols which use different puls/pause lengths. This case is for example the [[IRMP_-_english#A1TVBOX|A1TVBOX]]-protocol.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
The pulse position coding is known from usual UART&#039;s. Every bit has a fixed length here. Depending on the value (0 or 1), it is a pulse or a pause.&lt;br /&gt;
&lt;br /&gt;
Typical criteria for a &#039;&#039;&#039;pulse position protocol&#039;&#039;&#039; is:&lt;br /&gt;
* there are &#039;&#039;&#039;multiples&#039;&#039;&#039; of a basic pulse/pause length&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A tabular listing of different IR-protocols can be found here: [[IRMP_-_english#IR_Protocols_in_Detail|IR Protocols in Detail]].&#039;&#039;&#039;&lt;br /&gt;
The specified timings are typical values. In some remotes they differ up to 40 % in real life. Therefore [[IRMP_-_english#top|IRMP]] uses minimum/maximum limits to be tolerant with the timing.&lt;br /&gt;
&lt;br /&gt;
== Protocol Detection ==&lt;br /&gt;
&lt;br /&gt;
The most of the [[IRMP_-_english#top|IRMP]] decoded protocols have something in common: they show a start bit which is unique for their timing.&lt;br /&gt;
&lt;br /&gt;
According to this start bit timing the most protocols are discriminated. [[IRMP_-_english#top|IRMP]] measures the timing of the start bit and reorders its timing tables &amp;quot;on-the-fly&amp;quot; for the discovered protocol. So the following bits can be read sequential without the need of storing a complete frame.&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] does not wait for reading a complete frame to analyze, it starts decoding after the first pulse detection.&lt;br /&gt;
&lt;br /&gt;
If the first read start bit is not unique, [[IRMP_-_english#top|IRMP]] follows multiple possible protocols. If for plausible reasons one protocol is no more possible this track will be dropped.&lt;br /&gt;
&lt;br /&gt;
The detection is implemented as a [[Statemachine|state machine]], which is called interrupt driven with an frequency of typically 15.000 per second. the [[Statemachine|state machine]] knows the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the first pulse length of the start bit&lt;br /&gt;
* detect the pause length of the start bit&lt;br /&gt;
* detect the pulse length of the first data bit&lt;br /&gt;
&lt;br /&gt;
After that, the pulse/pause length of the start bit are known. Now all enabled protocols are searched for this length. If a protocol matches, the timing table for this protocol is loaded and the following bits are checked if the pulse/pause timing still fit to the limis.&lt;br /&gt;
&lt;br /&gt;
So the [[Statemachine|state machine]] continues with the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the pauses of the data bits&lt;br /&gt;
* detect the pulse length of the data bits&lt;br /&gt;
* check timing. If different, switch back to another valid IR protocol, otherwise return&lt;br /&gt;
* detect the sop bit if present in the protocol&lt;br /&gt;
* check data for plausibility, like CRC or other redundant data bits&lt;br /&gt;
* convert data to device address and command&lt;br /&gt;
* detect code repetition by long key press, set according flag&lt;br /&gt;
&lt;br /&gt;
Indeed the [[Statemachine|state machine]] is even more complex because some protocols have no start bit (e.g. [[IRMP_-_english#DENON|Denon]]) or have multiple start bits (4 in [[IRMP_-_english#B.26O|B&amp;amp;O]]) or have within the frame another sync bit (z.B. [[IRMP_-_english#SAMSUNG|Samsung]]). These extra conditions are caught in the code by protocol specific &amp;quot;special cases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Switching to an other protocol can happen multiple times during receiving of a frame, f.e. from [[IRMP_-_english#NEC42|NEC42]] (42 Bit) to [[IRMP_-_english#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), when a premature sync bit was detected. Or from [[IRMP_-_english#NEC + extended NEC|NEC]]/[[IRMP_-_english#NEC42|NEC42]] (32/42 Bit) to [[IRMP_-_english#JVC|JVC]] (16 Bit) when the stop bit premature occured. It is getting difficult when two possible protocols after the detection of the start bit use different codings, e.g. when the one protocol uses a [[IRMP_-_english#Pulse Distance|Pulse Distance Coding]] and the other uses a [[IRMP_-_english#Biphase|Biphase Coding (Manchester)]]. In this case [[IRMP_-_english#top|IRMP]] stores the necessary bits for both codings and releases later the one or the other.&lt;br /&gt;
&lt;br /&gt;
Furthermore some remotes are transmitting in particular protocols for redundance reasons (error detection) or for long key presses repetition frames. These will be discriminated by IRMP: the necessary frames for error detection are checked by IRMP, but not passed to the application. The other will be detected as long key press and flagged by IRMP.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Date: 2018-08-29&lt;br /&gt;
&lt;br /&gt;
Download of stable version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] &amp;amp; [[IRSND_-_english|IRSND]] is also available by SVN: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP in SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP on GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The version in the SVN can be a newer version than the stable version stored in Irmp.zip. In doubt, use the download link of Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see the history of the software changes here: [[IRMP_-_english#Software_History|Software History]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The source code can be easily compiled for AVR MCUs by loading the project file irmp.aps in AVR Studio 4.&lt;br /&gt;
&lt;br /&gt;
For other development environments it is simple to create a project or makefile. The source includes:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - IR-decoder core&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - all protocoll definitions&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - target independant definitions for AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include file for the application&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - user configuration&lt;br /&gt;
&lt;br /&gt;
Sample applications (main functions and timer configurations):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR with output on UART&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;Important: include only irmp.h to your application:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other include files are included within irmp.h. See also the sample application irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the preprocessor constant &#039;&#039;&#039;F_CPU in project or makefile&#039;&#039;&#039; must be defined. This should have at least the value of 8000000UL, processor speed should be at least 8 MHz. This applies to AVR targets and not for MCUs with PLL. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] is also running on PIC processors. For the PIC-CCS compiler are already the necessary preprocessor defines set, so that [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be directly used in the CCS environment. Only a short interrupt service routine like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
must be added. The Interrupt period time must be set to 66 µs (15 kHz).&lt;br /&gt;
&lt;br /&gt;
For AVR processors you will find an example for the usage of [[IRMP_-_english#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. The main things are the [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]] initializing of the timer and the processing of received IR commands. The received protocoll, the device address and the command will be output on the HW-UART.&lt;br /&gt;
&lt;br /&gt;
For the Stellaris LM4F120 Launchpad from TI (ARM Cortex M4) is a propriate timer init function already integrated in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used also with STM32 microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Another new implementation is available on the mbed platform.&lt;br /&gt;
=== avr-gcc Optimizations ===&lt;br /&gt;
&lt;br /&gt;
From version avr-gcc 4.7.x the option [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] can be used to make the call of the external function irmp_ISR() from the main ISR more efficent. This improves the performance of the ISR a little.&lt;br /&gt;
&lt;br /&gt;
Add the following compiler- and linker options:&lt;br /&gt;
&lt;br /&gt;
* additional compiler option: -flto&lt;br /&gt;
* additional linker options: -flto -Os&lt;br /&gt;
&lt;br /&gt;
If you forget the additional linker option -Os, the binary will be significant larger as it will no be optimized further. Also the option -flto must be passed to the linker, otherwise the link time optimization will not work.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration of [[IRMP_-_english#top|IRMP]] is done by settings in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] :&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#F_INTERRUPTS|number of interrupts per second]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_SUPPORT_xxx_PROTOCOL|supported IR protocols]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|hardware pin for IR receiver]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_LOGGING|IR logging]]&lt;br /&gt;
&lt;br /&gt;
=== Adjustments in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] will decode all protocols listed above in one ISR. For this, there are some settings necessary. These are set in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h].&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Number of interrupts per second. Should be set to a value from 10000 to 20000. The higher the value, the better the resolution and therefore the quality of detection. But a higher interrupt rate means also higher CPU load. The value of 15000 is in most cases a good compromise.&lt;br /&gt;
&lt;br /&gt;
Standardvalues:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On AVR controllers is a timer1 with 16 bit resolution used in the example [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. If for any reasons timer1 is not available, you can also use timer2 with 8 bit resolution.&lt;br /&gt;
&lt;br /&gt;
In this case timer2 will be configured as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example is valid for ATmega88/ATmega168/ATmega328. For other AVR MCUs check the datasheet.&lt;br /&gt;
&lt;br /&gt;
You must not forget to adjust the ISR for timer2 as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Here you can select which protocols should be supported by [[IRMP_-_english#top|IRMP]]. Standardprotocols are activated by default.&lt;br /&gt;
&lt;br /&gt;
Would you like to turn on more protocols or turn off some other for memory saving reasons, then the corresponding values in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] must be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [[IRMP_-_english#top|IRMP]] supported IR protocol consumes the noted amount of code. Here you can apply optimizations: for example the modulation frequency of 455 kHz for the [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol is far away from the frequencies that are used by other protocols. Maybe you need a different IR receiver, otherwise you could disable these protocols. For example you cannot receive a [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol (455kHz) with a TSOP1738 / TSOP 31238.&lt;br /&gt;
&lt;br /&gt;
Furthermore the protocols [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP_-_english#FDC|FDC]]/[[IRMP_-_english#RCCAR|RCCAR]] are only reliable detected at a frequency starting at 15 kHz. For [[IRMP_-_english#LEGO|LEGO]] it is even 20 kHz. When you want to use these protocols, you must adjust [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]]. Otherwise, during compilation you will get a warning and the corresponding protocols are automatically disabled.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
This constant defines the pin where the IR receiver is connected.&lt;br /&gt;
&lt;br /&gt;
Default value is PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two values must match your hardware configuration.&lt;br /&gt;
&lt;br /&gt;
This applies also to STM32 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the corresponding section for STM8 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PIC controllers there is only the define for &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - depending on compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using ChibiOS HAL, define a pin with the name &#039;&#039;&#039;IR_IN&#039;&#039;&#039; in your board config (board.chcfg) of ChibiOS&lt;br /&gt;
and regenerate the board files. When you want to use another name for the pin, change the constant &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039;&lt;br /&gt;
in irmpconfig.h. Use the name of the pin from the board config and prefix it with &amp;quot;LINE_&amp;quot;, as IRMP is using&lt;br /&gt;
the &amp;quot;line&amp;quot;-variant of the PAL-interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you turn on callbacks, on any level change at the input the callback function is called. This could be use to visualize incoming IR signals by driving another output pin.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normally the irmp_ISR() function is called continuously with the frequency F_INTERRUPTS (10-20kHz). The controller&lt;br /&gt;
can hardly switch to an energy-saving sleep mode, or must constantly wake up from it. If power consumption is important, e.g. for battery operation, this approach is not optimal.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; is activated, IRMP detects if no IR transmission is ongoing and then calls the function &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039;. This is controller-specific and must be provided and linked by the user. The controller can then be put into sleep while there is no ongoing transmission, thus reducing energy consumption.&lt;br /&gt;
&lt;br /&gt;
It is recommended to deactivate the timer interrupt in irmp_idle() and to activate a pinchange interrupt instead. Then the controller can be sent to sleep. If a falling edge is detected on the IR input pin, the pinchange interrupt is deactivated, the timer is activated again and irmp_ISR() is called immediately. You can find an example for the use of irmp_idle() in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
Using IRMP purely with pinchange interrupts and without timer interrupts is not supported.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
When using IRMP with ChibiOS/RT or ChibiOS/NIL, you can use their Event-module to wake a thread as soon as new&lt;br /&gt;
IR data was received and decoded.&lt;br /&gt;
&lt;br /&gt;
Set the &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; constant in irmpconfig.h to 1 to enable this. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definies the&lt;br /&gt;
value in the event bitmask that should symbolize the IRMP event. Use &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; to define&lt;br /&gt;
the variable name of the thread pointer that the event is sent to.&lt;br /&gt;
&lt;br /&gt;
Change irmpconfig.h like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use the event in your ChibiOS-project like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // use data in irmp_data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
With IRMP_LOGGING the logging of received IR frames can be turned on.&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation can be found here: [[IRMP_-_english#Scanning_of_unknown_IR_Protocols|Scanning of unknown IR Protocols]].&lt;br /&gt;
&lt;br /&gt;
=== IRMP in Practice ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] supported protocols use partly variable, partly fixed bit length from 2 up to 48 bits. These will be described by preprocessor defines.&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] separates these IR frames always into 3 sections:&lt;br /&gt;
&lt;br /&gt;
 1. protocol ID&lt;br /&gt;
 2. address or vendorcode&lt;br /&gt;
 3. command&lt;br /&gt;
&lt;br /&gt;
with this function&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
you can recall a decoded message. The return value is 1 when a message has been received, otherwise it is 0. In the first case the struct members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contain valid information.&lt;br /&gt;
&lt;br /&gt;
That means: finally you&#039;ll get simply three values (protocol, address and command) that can be checked with an if or switch statement. &lt;br /&gt;
Here is a sample decoder which checks for key 1-9 on a remote:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are possible constants for irmp_data.protocol, see also [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values of address and the command code of an unknown remote can be received and printed over UART or LCD. Then these values can be used hard coded in your decoder routine. Or you write a teaching routine, where you need to press a key once to store the code in an EEPROM. A sample for this can be found in [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Another [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup example main function] is included in the zip file, showing also the timer initialization.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Debouncing&amp;quot; of Keys ===&lt;br /&gt;
&lt;br /&gt;
To distinguish between long key press or a single press, the bit mask IRMP_FLAG_REPETITION exists. This will be set in struct member &#039;&#039;&#039;flags&#039;&#039;&#039; when a key on the remote is pressed for longer time and therefore the same command is repeated in short periods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // long key press&lt;br /&gt;
      // either:&lt;br /&gt;
      //   ignore the (repeated) key&lt;br /&gt;
      // or:&lt;br /&gt;
      //   use this information for a repeat function&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // key was pressed again&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be used to &amp;quot;debounce&amp;quot; the keys 0-9 by ignoring commands with bit IRMP_FLAG_REPETITION set. For keys like &#039; VOLUME+&#039; or &#039;VOLUME-&#039; using the repetition could be useful, maybe to [[LED-Fading|fade a LED]].&lt;br /&gt;
&lt;br /&gt;
If you want to decode only singe keys, you can reduce the block above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Its a new key&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mode of Operation ==&lt;br /&gt;
&lt;br /&gt;
The  &amp;quot;Working Horse&amp;quot; of [[IRMP_-_english#top|IRMP]] is the interrupt service routine irmp_ISR() which should be called 15000 times per second. Is this rate different, the constant [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] needs to be adjusted.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detects first the length and the form of the startbit(s) and determines the used protocols by this information. As soon as the protocol was identified, the further bits are parameterized to read the following bits most efficient until the IR command is complete.&lt;br /&gt;
&lt;br /&gt;
Just to stop slashers:&lt;br /&gt;
&lt;br /&gt;
I know that the ISR is quite large. But as it acts as a state machine, the effective executed code per cycle is relative small. While it is &amp;quot;dark&amp;quot; (and that is the case for the most time ;-)) the spent time is vanishing short. In the WordClock project for example are called 8 ISR&#039;s with the same timer, there is irmp_ISR() only one amongst many others. For at least 8 MHz CPU clock no timing problems occured. Therefor I see really no problem in the length of the ISR.&lt;br /&gt;
&lt;br /&gt;
A crystal is not a neccessary must, it works well with the internal AVR oscillator. Remember to set the correct fuses for the CPU to run at 8 MHz, check [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] for correct values for an ATMEGA88.&lt;br /&gt;
&lt;br /&gt;
== Scanning of unknown IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
Changing in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the value for [[IRMP_-_english#IRMP_LOGGING|IRMP_LOGGING]] to 1, then a logging in [[IRMP_-_english#top|IRMP]] will be turned on: the bright- and darkphases will be sent via UART with 9600 bit/s: 1=dark, 0=bright. Maybe the constans in the functions uart_init() and uart_putc() must be adjusted, this depends on the used AVR MCU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark: for PIC-processors there is an own logging module named [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. This makes it possible to log via USB. This applies not to the AVR version&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you record these protocol scans with a terminal program and save them as a textfile, you can use these files for analyzing the frames in ordner to add a yet unknown protocol to [[IRMP_-_english#top|IRMP]] - see next chapter.&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that is not supported by [[IRMP_-_english#top|IRMP]] you can send me ([http://www.mikrocontroller.net/user/show/ukw ukw]) the scan files. Then I can check if the protocol fits into the IRMP concepts and adapt the sources if applicable.&lt;br /&gt;
&lt;br /&gt;
== IRMP under Linux and Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be compiled under Linux for testing IR scans in textfiles. In the subdirectory &#039;IR-Data&#039; you will find such files that you can use as input files for [[IRMP_-_english#top|IRMP]].&lt;br /&gt;
&lt;br /&gt;
The compilation of [[IRMP_-_english#top|IRMP]] is started by:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
This will generate 3 IRMP versions:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version for 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version for 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version for 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Starting IRMP ===&lt;br /&gt;
&lt;br /&gt;
The calling syntax is:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
The given options are exclusive, that means only one option per call is valid:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             print a list with pulses and pauses&lt;br /&gt;
   -a analyze           analyse the puls/pauses and write a &amp;quot;spectrum&amp;quot; in ASCII format&lt;br /&gt;
   -v verbose           verbose output&lt;br /&gt;
   -p  Print Timings    print a timing table for all protocols&lt;br /&gt;
&lt;br /&gt;
Samples:&lt;br /&gt;
&lt;br /&gt;
=== Normal Output ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output Lists ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analysing ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you see the measured times of all pulses and pauses as (horizontal) bell shaped curves, which of course are not quite ideal displayed due to the ASCII formatting. The smaller the measured channels, the better is the timing of the remote.&lt;br /&gt;
&lt;br /&gt;
The above output can be read as:&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pulse length between 9000 and 9200 µs, in average 9102 µs. The deviation from this average is about 1.1 %&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pause length between 4300 and 4500 µs, the average is 4424 µs. The error is about 2.8 %.&lt;br /&gt;
&lt;br /&gt;
* the pulse length of a databit is between 500 and 700 µs, in average 650 µs, the error is (quite large!) 23.1 %&lt;br /&gt;
&lt;br /&gt;
Further there are two more pauses with different length (for bits 0 and 1). Checking this I leave to the willing reader ;-)&lt;br /&gt;
&lt;br /&gt;
=== Verbose Output ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting under Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used as well under Windows, like:&lt;br /&gt;
&lt;br /&gt;
* start command line console&lt;br /&gt;
* change to directory &#039;irmp&#039;&lt;br /&gt;
* enter:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
The same options apply as for the Linux version.&lt;br /&gt;
&lt;br /&gt;
=== Long Outputs ===&lt;br /&gt;
&lt;br /&gt;
As some outputs are pretty large, it is recommended to redirect the output to a file or filter for paging:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Remote Controls ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protocol || Name || Device || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports more and more also camera remotes like:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
The command variety isn&#039;t really large. Usually the cameras understand only the command:&lt;br /&gt;
&amp;quot;Trigger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is a short table for [[IRMP_-_english#PENTAX|PENTAX]] cameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Command || Function&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Trigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || change Zoomlevel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because there is no address designated in the [[IRMP_-_english#PENTAX|PENTAX]]-protocol, this should be set for sending in [[IRSND_-_english|IRSND]] to 0x0000. You should also use a crystal in this case because especially the Nikons are very fussy regarding the timing.&lt;br /&gt;
&lt;br /&gt;
== IR Keyboards ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]]  supports from version 1.7.0 also IR keyboards, namely the FDC-3402 &amp;lt;s&amp;gt; from www.pollin.de (partno. 711 056) for less than 2 Euro.&amp;lt;/s&amp;gt; (not available as of 19.09.2017 )&lt;br /&gt;
&lt;br /&gt;
On detection of a key press the following data is returned:&lt;br /&gt;
&lt;br /&gt;
 Protocol-Number  (irmp_data.protocol): 18&lt;br /&gt;
 Address          (irmp_data.address) : 0x003F&lt;br /&gt;
&lt;br /&gt;
As command (irmp_data.command) the following values are returned:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special keys left side:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above values are for pressing a key. On release,  [[IRMP_-_english#top|IRMP]] sets also Bit 8 (0x80) in the command.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F&lt;br /&gt;
&lt;br /&gt;
Exception for the ON / OFF key: This one sends only for key press a code, not for release.&lt;br /&gt;
&lt;br /&gt;
Is a key pressed for a longer time, it will be notified in irmp_data.flag&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x00&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When key combinations (like a capital &#039;A&#039;) are pressed, then the return values are a sequence like this:&lt;br /&gt;
&lt;br /&gt;
      Left SHIFT-key pressed:    0x0002&lt;br /&gt;
      Key &#039;a&#039; pressed:           0x001F&lt;br /&gt;
      Key &#039;a&#039; released:          0x009F&lt;br /&gt;
      Left SHIFT-key released:   0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] you will find a function get_fdc_key() for the Linux version, which can be used as a template to convert the FDC keycodes into the corresponding ASCII codes. This function can be used either local on the MCU to decode the keycodes, or on the hostsystem (e.g. PC) where the IRMP data structure is sent to. Therefore the function incl. preprocessor constands should be copied to your application code.&lt;br /&gt;
&lt;br /&gt;
Here is an excerpt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
 &lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And at least an example for the usage of function get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All non-printable characters are coded as:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Key               || Constant                || Value&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menu              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Back              || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Forward           || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adress            || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Window            || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Page           || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| New Page          || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Font              || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Print             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| On/Off            || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Insert            || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Delete            || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| End               || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor right      || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor down       || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Page up           || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Page down         || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Left Mousebutton  || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Right Mousebutton || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The function get_fdc_key() considers the holding of key pressed of Shift-, Ctrl- and ALT. For this reason not only the writing of capital letters works, but also the selection of special characters with the key combination ALT + key, e.g. ALT + m -&amp;gt; µ or ALT + q -&amp;gt; @. Also you can send CTRL-A to CTRL-Z by using the Ctrl key. The Caps Lock key is ignored, as I regard this key as the most unnecessary key at all ;-)&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== IR Protocols in Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC Protocol|NEC + extended NEC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data NEC || 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data ext. NEC || 16 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 9000µs pulse, 2250µs pause, 560µs pulse, ~100ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC16 Protocol (JVC)|JVC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 12 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause, 6000µs pause if keyboard repetition&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 8 address bits + 1 sync bit + 8 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 560µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 42 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 address bits + 13 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 110ms (beginning from start bit), 9000µs pulse, 2250µs pause, 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#ACP24 Protocol|ACP24]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 70 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 70 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 390µs pulse, 950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 390µs pulse,  950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 390µs pulse, 13000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 390µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LGAIR Protocol|LGAIR]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 28 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 16 command bits + 4 checksum bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first (&#039;&#039;&#039;differing&#039;&#039;&#039; to [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SAMSUNG Protocol|SAMSUNG]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data(1) bits + 1 sync bit + 20 data(2)-bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data(1) || 16 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data(2) || 4 ID bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || repetition after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || Repetition after approx. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 32 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 8 Bits + 8 inverted Bits + 8 Bits + 8 inverted Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || one after approx. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 45 msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#MATSUHITA Protocol|MATSUSHITA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 customer bits + 6 command bits + 12 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 22 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 11 command bits + 11 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#KASEIKYO_Protocol_.28.22Japan Protocol.22.29|KASEIKYO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 customer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 ID bits + 8 parity bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3380µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 423µs pulse,  423µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 423µs pulse, 1269µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 423µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 80ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start Bits + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 3 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80EXT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 4 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 3637µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Denon Protocol|DENON]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (in practice, theoretically: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 5 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 6 data bits + 2 extension bits + 2 data construction bits (normal: 00, inverted: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || no Start Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse, 775µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 310µs pulse, 1780µs pause (in practice, theoretically: 275µs pulse, 1900µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 310µs pulse (310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse)&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || after 65ms with inverted command bits (data construction bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || both frames after 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 11100000 + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1060µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  437µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 start bits + 16 data bits + 1 trailer bit + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 1 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 2 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 3 || 200µs pulse, 15425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 4 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 200µs pulse, 9175µs pause&lt;br /&gt;
|-&lt;br /&gt;
| R Bit || 200µs pulse, 6050µs pause, repeats the last bit&lt;br /&gt;
|-&lt;br /&gt;
| Trailer Bit || 200µs pulse, 12300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 200µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 40 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 12 x 0 Bits + 4 press/release bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2085µs pulse, 966µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 300µs pulse,  220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 300µs pulse, 715µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 300µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Press Key || press/release bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Release Key || press/release bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of approx. 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 2 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 2 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse,  1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 3500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 56 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 24 bits (010000000000010000000001) + 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3600µs pulse, 1600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 565µs pulse,  316µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 565µs pulse, 1140µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 565µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 6 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 1000µs pulse,  1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1000µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 1000µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 210µs pulse, 6218µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pulse,  1400µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 12 command bits + 4 crc bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 1026µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse,  263µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 553µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#VINCENT|VINCENT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 8 command bits + 8 repeated command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2500µs pulse, 4600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1540µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 13 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse,  900µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 450µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RCMM_Protocol|RCMM]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 start bit + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM32 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM24 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM12 || 4 address bits (= 2 mode bits + 2 device bits) + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 500µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 00 Bits || 230µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 01 Bits || 230µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 10 Bits || 230µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 11 Bits || 230µs pulse, 720µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 230µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SIRCS_Protocol|SIRCS]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequency ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 12-20 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 7 command bits + 5 address bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1200µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || twice after approx. 25ms, that means: 2nd und 3rd Frame&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || starting with 4th identical frame, distance approx. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse distance Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse, 1300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th etc. indentical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
This protocol is very similar to [[IRMP_-_english#NUBERT|NUBERT]], but here it will be sent only one frame. Additionally there are 11 instead of 10 data bits and no stop bit. The pause time between frame repetitions is substantial lower.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 11 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 380µs pulse, 1280µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 6,6ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1250µs pulse, 440µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 440µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after approx. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th ... identical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 7 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 930µs pulse, 2790µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 3 times after 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC5 and RC5x Protocol|RC5 + RC5X]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start Bits + 12 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5 || 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 start bit + 13 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5X || 1 inverteds command bit + 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 data bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 14 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 inverteds command bit + 1 toggle bit + 5 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC6 and RC6A Protocol|RC6 + RC6A]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (000) + 1 toggle bit + 16 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (110) + 1 toggle bit + 31 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6 || 8 address bits + 8 Command Bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A || &amp;quot;1&amp;quot; + 14 customer bits + 8 system bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 mode bits (&amp;quot;110&amp;quot;) + 1 toggle bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 toggle(!) + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2666µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 444µs pause, 444µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 444µs pulse, 444µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Grundig Protocol|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms pause + N Info-Frames + 117,76ms pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 pre bit + 1 start bit + 9 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Grundig || 9 command bits + 0 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Nokia || 8 command bits + 8 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#IR60_.28SDA2008_and_MC14497P.29|IR60]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 start bit + 101111 + 0 stop bits + 22ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Data Frame || 1 start bit + 7 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz? (Merlin-Tastatur mit Ruwido protocol: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 start bit + 22 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 start bit + 17 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Siemens || 11 address bits + 10 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Data Ruwido || 9 address bits + 7 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 275µs pause, 275µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once with repeat bit set (?)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 16 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 250µs pulse, 150µs + 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 250µs pulse, 150µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetric&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 210µs pulse, 210µs + 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 210µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 address bits + 2 special bits +  6 command bits + 4 special bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pause, 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 2 additinal frames with special bits set&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || only repetition of the 2nd frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protocols ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 3 address bits + 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 800µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Length || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes of IRMP in 3.0.x ===&lt;br /&gt;
Version 3.1.1:&lt;br /&gt;
&lt;br /&gt;
* 2018-08-30: New option: IRMP_USE_IDLE_CALL&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 2018-08-29: Port to ChibiOS&lt;br /&gt;
* 2018-08-29: New protocol: GREE&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 2018-02-19: corrected handling of irmp_flags for invalid frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 2017-08-25: New protocol: IRMP16 for transparent 16 bit data communication&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 2016-11-18: Corrected buffer overflow in irmp-main-avr-uart.c&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-19: New protocol [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-09: New protocol [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (air conditioner)]]&lt;br /&gt;
* 2016-09-09: Some modifications for Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 2016-01-16: Some corrections of port to ESP8266&lt;br /&gt;
* 2016-01-16: Added port to MBED&lt;br /&gt;
* 2016-01-16: Added several hardware dependent example main source files&lt;br /&gt;
&lt;br /&gt;
=== Older Versions ===&lt;br /&gt;
&lt;br /&gt;
* 2015-11-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 2015-11-17: Port to ESP8266&lt;br /&gt;
* 2015-11-17: Port to Teensy (3.x)&lt;br /&gt;
* 2015-11-10: Added support for STM8 microcontroller&lt;br /&gt;
* 2015-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
* 2015-06-15: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ACP24|ACP24]]&lt;br /&gt;
* 2015-05-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#S100|S100]]&lt;br /&gt;
* 2015-05-29: Some smaller corrections&lt;br /&gt;
* 2015-05-28: Added Logging for XMega&lt;br /&gt;
* 2015-05-28: Timing corrections  for FAN protocol&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#MERLIN|MERLIN]]&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FAN|FAN]]&lt;br /&gt;
* 2015-05-18: Added F_CPU macro for STM32L1XX&lt;br /&gt;
* 2015-05-18: Some corrections for XMega port&lt;br /&gt;
* 2015-04-23: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* 2015-04-23: Port to AVR XMega&lt;br /&gt;
* 2014-09-19: Bugfix: added missing newline before #else&lt;br /&gt;
* 2014-09-18: Added logging for ARM STM32F10X&lt;br /&gt;
* 2014-09-17: Corrected PROGMEM access to array irmp_protocol_names[].&lt;br /&gt;
* 2014-09-15: Changed timing tolerances for [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol&lt;br /&gt;
* 2014-09-15: Moved  irmp_protocol_names to flash, additional UART routines in irmp-main-avr-uart.c&lt;br /&gt;
* 2014-07-21: Port to PIC 12F1840&lt;br /&gt;
* 2014-07-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 2014-07-09: Some small corrections&lt;br /&gt;
* 2014-07-01: Added logging for ARM_STM32F4XX&lt;br /&gt;
* 2014-07-01: IRMP port for PIC XC8 compiler, removed variadic macros because of stupid XC8 compiler :-(&lt;br /&gt;
* 2014-06-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LGAIR|LGAIR]]&lt;br /&gt;
* 2014-05-30: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SPEAKER|SPEAKER]]&lt;br /&gt;
* 2014-05-30: Optimized timings for [[IRMP_-_english#SAMSUNG|SAMSUNG]] protocol&lt;br /&gt;
* 2014-02-20: Corrected decoding of [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2014-02-19: &#039;&#039;&#039;New protocols&#039;&#039;&#039;: [[IRMP_-_english#RCMM|RCMM32, RCMM24 and RCMM12]]&lt;br /&gt;
* 2014-09-17: Optimized timing for [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: Optimized detection of [[IRMP_-_english#ORTEK|ORTEK (Hama)]] frames&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 2013-03-12: Changed timing tolerancies for [[IRMP_-_english#RECS80|RECS80]]- and  [[IRMP_-_english#RECS80EXT|RECS80EXT]] protocol&lt;br /&gt;
* 2013-01-21: Corrected detection of repetition frame beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2013-01-17: Corrected frame detection beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-12-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 2012-12-07: Improved detection von [[IRMP_-_english#DENON|DENON]] repetition frame&lt;br /&gt;
* 2012-11-19: Port to Stellaris LM4F120 TI Launchpad (ARM Cortex M4)&lt;br /&gt;
* 2012-11-06: Corrected [[IRMP_-_english#DENON|DENON]] frame detection&lt;br /&gt;
* 2012-10-26: Some timer corrections and adaptations for Arduino&lt;br /&gt;
* 2012-07-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#BOSE|BOSE]]&lt;br /&gt;
* 2012-06-18: Added support for ATtiny87/167&lt;br /&gt;
* 2012-06-05: Some smaller corrections of port to ARM STM32&lt;br /&gt;
* 2012-06-05: Correction of include in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 2012-06-05: Bugfix, if only [[IRMP_-_english#NEC_+_extended_NEC|NEC]] and [[IRMP_-_english#NEC42|NEC42]] activated&lt;br /&gt;
* 2012-05-23: Port to ARM STM32&lt;br /&gt;
* 2012-05-23: Bugfix frame detection for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-02-27: Bugfix in IR60-Decoder&lt;br /&gt;
* 2012-02-27: Bugfix in CRC calculation of  [[IRMP_-_english#KASEIKYO|KASEIKYO]] frames&lt;br /&gt;
* 2012-02-27: Port to C18 Compiler for PIC microcontrollers&lt;br /&gt;
* 2012-02-13: Bugfix: most significant bit in Address wrong in [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol, if [[IRMP_-_english#NEC42|NEC42]] protocol activated, too&lt;br /&gt;
* 2012-02-13: Corrected timing of [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol&lt;br /&gt;
* 2012-02-13: [[IRMP_-_english#KASEIKYO|KASEIKYO]]: Genre2 bits will be now stored in upper nibble of flags&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#KATHREIN|KATHREIN]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#THOMSON|THOMSON]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LEGO|LEGO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC16|NEC16]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC42|NEC42]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NETBOX|NETBOX]]&lt;br /&gt;
* 2011-09-20: Port to ATtiny84 and ATtiny85&lt;br /&gt;
* 2011-09-20: Improved key repetition detection in [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
* 2011-09-20: Improved decoding of [[IRMP_-_english#Biphase|Biphase]] protocols&lt;br /&gt;
* 2011-09-20: Fixed some smaller bugs in [[IRMP_-_english#RECS80|RECS80]] decoder&lt;br /&gt;
* 2011-09-20: Corrected detection of additional bits in SIRCS protocol&lt;br /&gt;
* 2011-01-18: Some corrections for [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2011-01-18: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
* 2011-01-18: [[IRMP_-_english#SIRCS|SIRCS]]: additional bits (&amp;gt;12) will be stored in address&lt;br /&gt;
* 2011-01-18: Some timing corrections for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-09-04: Bugfix for F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 2010-09-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 2010-08-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#JVC|JVC]]&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: genre bits will be now stored&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: Improved handling of repetition frames&lt;br /&gt;
* 2010-08-29: Improved support of [[IRMP_-_english#APPLE|APPLE]] protocols.&lt;br /&gt;
&lt;br /&gt;
* 2010-07-01: Bugfix: added a timeout for [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames. This avoids &#039;ghost commands&#039;.&lt;br /&gt;
&lt;br /&gt;
* 2010-06-26: Bugfix: deactivated [[IRMP_-_english#RECS80|RECS80]], [[IRMP_-_english#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] if interrupts frequency is low&lt;br /&gt;
&lt;br /&gt;
* 2010-06-25: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RCCAR|RCCAR]]&lt;br /&gt;
* 2010-06-25: Extended keyboard detection for [[IRMP_-_english#FDC|FDC]] protocol (IR keyboard)&lt;br /&gt;
* 2010-06-25: Interrupt frequency now up to 20kHz possible&lt;br /&gt;
&lt;br /&gt;
* 2010-06-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 2010-06-09: Corrected timing for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-06-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 2010-05-26: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 2010-05-26: Bugfix: detection of long keyboard press for [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-05-17: Bugfix [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol: corrected command bit mask&lt;br /&gt;
&lt;br /&gt;
* 2010-05-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 2010-05-16: Improved handling of automatic frame repetitions for [[IRMP_-_english#SIRCS|SIRCS]]-, [[IRMP_-_english#SAMSUNG32|SAMSUNG32]]-, and [[IRMP_-_english#NUBERT|NUBERT]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-04-28: Only some cosmetic code optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-04-16: Improved all timing tolerancies&lt;br /&gt;
&lt;br /&gt;
* 2010-04-12: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-29: Bugfix: detection of multiple [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
* 2010-03-29: Moved configuration data to  [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h]&lt;br /&gt;
* 2010-03-29: Introduced a program version in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 2010-03-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-16: Correction of RECS80 start bit timings&lt;br /&gt;
* 2010-03-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-15: Some optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-03-14: Port to PIC&lt;br /&gt;
&lt;br /&gt;
* 2010-03-11: Some adjustements for some ATMegas&lt;br /&gt;
&lt;br /&gt;
* 2010-03-07: Bugfix: Reset of state machine after a incomplete [[IRMP_-_english#RC5_+_RC5X|RC5]] frame&lt;br /&gt;
&lt;br /&gt;
* 2010-03-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#APPLE|APPLE]]&lt;br /&gt;
* 2010-03-05: Data  irmp_data.addr + irmp_data.command will be now stored in the bit order of the appropriate protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-03-04: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP_-_english#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol)&lt;br /&gt;
* 2010-03-04: Changed some timer tolerances changes of [[IRMP_-_english#SIRCS|SIRCS]]- and [[IRMP_-_english#KASEIKYO|KASEIKYO]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: corrected detection and suppression of automatic frame repetitions&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: device ID bits will be now stored in irmp_data.command (not irmp_data.address anymore)&lt;br /&gt;
* 2010-03-02: Enlargement of scan buffers (for logging)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-24: New variable flags in IRMP_DATA for detection of long key press&lt;br /&gt;
&lt;br /&gt;
* 2010-02-20: Bugfix [[IRMP_-_english#DENON|DENON]] protocol: repetition frame is now basically inverted&lt;br /&gt;
&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol-Varianten, z.&amp;amp;nbsp;B. [[IRMP_-_english#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#RC6_+_RC6A|RC6]]- and [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2010-02-19: Some improvements for [[IRMP_-_english#RC5_+_RC5X|RC5]] decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-13: Bugfix: Puls/Pause counters were 1 too low, now better detection of protokols with very short pulses&lt;br /&gt;
* 2010-02-13: Improved detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
&lt;br /&gt;
* 2010-02-12: New: [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-02-05: Eliminated a conflict between [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-01-07: First version&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
=== IR Abstract ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4&lt;br /&gt;
&lt;br /&gt;
=== SIRCS Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24 Protocol ===&lt;br /&gt;
&lt;br /&gt;
The ACP24-Protocol is used by Stiebel-Eltron-Aircons&lt;br /&gt;
&lt;br /&gt;
The structure of the 70 databits is :&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
These are converted into the following 16 bits from irmp_data.command:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Meaning of the symbols:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperature + 15 degree&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 degree&lt;br /&gt;
            0100        19 degree&lt;br /&gt;
            0101        20 degree&lt;br /&gt;
            0110        21 degree&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 degree&lt;br /&gt;
&lt;br /&gt;
    N    = Nightmode&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    VV   = fan, v must be 1!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      level 1&lt;br /&gt;
            01   1      level 2&lt;br /&gt;
            10   1      level 3&lt;br /&gt;
            11   1      Automatic&lt;br /&gt;
&lt;br /&gt;
    MMM  = Mode&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      turn off&lt;br /&gt;
            001  0      turn on&lt;br /&gt;
            001  1      cooling&lt;br /&gt;
            010  1      fan&lt;br /&gt;
            011  1      demist&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatic-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
To control the air con via [[IRSND_-_english|IRSND]], the following functions can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR Protocol ===&lt;br /&gt;
&lt;br /&gt;
The LG Air Con is controlled by an &#039;intelligent&#039; remote. These are the encoded data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Command                 AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16 Protocol (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG Protocol ===&lt;br /&gt;
&lt;br /&gt;
(was reverse engineered by several protocols (Daewoo or similar), so no direkt link to SAMSUNG documents is available)&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Daewoo-protocol, which uses the same principle of the sync-bits in the center of a frame, but words with different timings:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO Protocol (&amp;quot;Japan Protocol&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80 and RECS80 Extended Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5 and RC5x Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 and RC6A Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 and MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Other Protocols ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP on Youtube ==&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
== Other Artikels ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Infrared sender und receiver controlled via ip network with Android smartphone as remote control:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR Tester ===&lt;br /&gt;
&lt;br /&gt;
IR tester with LCD by Klaus Leidinger:&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller-projekte.de/Mikrocontroller/index.html&lt;br /&gt;
&lt;br /&gt;
=== IR Tester with AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
IR tester for Pollin AVR-NET-IO with Pollin ADD-ON Board:&lt;br /&gt;
&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR remote receiver by Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Receiver/Sender/Switch with Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR switch based on USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo controlled IR Sender ===&lt;br /&gt;
&lt;br /&gt;
Servo controlled IR Sender (adaptive) by Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Adaptive IR Remote Control ===&lt;br /&gt;
&lt;br /&gt;
Adaptive IR remote control by Robert and Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight by Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
STM8 Moodlight by Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity Mirror LED Ceiling Lamp ===&lt;br /&gt;
&lt;br /&gt;
Infinity Mirror LED ceiling lamp with remote control by Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Cinema Control ===&lt;br /&gt;
&lt;br /&gt;
Cinema control by Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Leading-Edge Control ===&lt;br /&gt;
&lt;br /&gt;
leading-edge control:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit as coffee bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino as IR Receiver ===&lt;br /&gt;
&lt;br /&gt;
Arduino as IR Receiver:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR Volume Control with Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
volume control with Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Shutdown RaspPI with IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP under RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED strip remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, a modular Firmware for AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind solver with LED stripes and IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control with ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library for STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP on STM32 - Construction Guidance ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Seminar Paper - Extension of Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Acknowledgment ==&lt;br /&gt;
&lt;br /&gt;
I thank Vlad Tepesch, Klaus Leidinger, Peter K., and Dániel Körmendi, who sent me many scan files of their IR remote controls.&lt;br /&gt;
&lt;br /&gt;
I thank Christian F. for his tipps relating to the port to PIC MCUs, gera for the port to PIC-C18 compiler, kichi (Michael K.) for the port to ARM STM32, Markus Schuster for the port to TI&#039;s Stellaris LM4F120 Launchpad (ARM Cortex M4), Matthias Frank for the port to XMega, Wolfgang S. for the port to ESP8266, Achill Hasler for the port to Teensy, Axel Schwenke for the port to STM8.&lt;br /&gt;
&lt;br /&gt;
Thanks to Dániel Körmendi, who added the LG-AIR protocol to [[IRSND_-_english|IRSND]]. Thanks to Ulrich v.d. Kammer for the Pentax protocol extension in [[IRSND_-_english|IRSND]].&lt;br /&gt;
&lt;br /&gt;
At least I will thank Jojo S. for his great job translating this documentation!&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
You can discuss IRMP &amp;amp; IRSND in the german thread [http://www.mikrocontroller.net/topic/162119 Infrared Multi Protocol Decoder].&lt;br /&gt;
&lt;br /&gt;
Have fun with IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99608</id>
		<title>IRMP - english</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99608"/>
		<updated>2018-08-30T13:57:20Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Explain IRMP_USE_IDLE_CALL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the English translation of the [[IRMP#top|german IRMP documentation]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
Project Intention:&lt;br /&gt;
&lt;br /&gt;
Because RC5 isn&#039;t only outdated, today its already obsolete and because more and more electronic devices in consumer electronics around us are used, it is time to develop an IR-decoder that can &#039;understand&#039; about 90 % of IR-remotes that are used in our daily life.&lt;br /&gt;
&lt;br /&gt;
This article indroduces &#039;IRMP&#039; as &amp;quot;Infrared-Multiprotocol-Decoder&amp;quot; in all details. The counterpart, [[IRSND_-_english|IRSND]] as IR-Encoder can be found in this [[IRSND_-_english|document]].&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrared Multiprotocol Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Connection of a IR receiver module to MCU]]&lt;br /&gt;
&lt;br /&gt;
=== Supported MCUs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] has been implemented on several MCU families:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- and XC8/C18 compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (tested on STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (tested on STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several ARM-Cortex-µCs, for Example STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Officially supported µC-Series]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports More µC-Series, community supported]&lt;br /&gt;
&lt;br /&gt;
=== Supported IR Protocols ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] - the infrared remote decoder, which can decode several protocols at once, is capable of decoding the following protocols (in alphabetic order):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;supported protocols&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protocol || Vendor&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FAN|FAN]] || FAN, remote for fans&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, e.g. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]] || various european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon and other japanese vendors which are members of the  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner &#039;&#039;&#039;(NEW!)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MERLIN|MERLIN]]  || MERLIN remote (Pollin article number: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName and many more asian vendors.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NUBERT|NUBERT]] || Nubert, e.g. Subwoofer Systems&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PANASONIC|PANASONIC]] || PANASONIC Beamer (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PENTAX|PENTAX]] || PENTAX (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6A]] || Philips, Kathrein and others, e.g. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCCAR|RCCAR]] || RC Car: IR remote for RC toys &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCMM|RCMM]] || Fujitsu-Siemens e.g. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ROOMBA|ROOMBA]] || iRobot Roomba vacuum cleaner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#S100|S100]] || similar to RC5, but 14 instead of 13 Bits and 56kHz modulation. vendor unknown.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG48|SAMSUNG48]] || various air conditions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (e.g. T-Home-Mediareceiver, MERLIN-keyboard(Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SPEAKER|SPEAKER]] || Speaker Systems like X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#VINCENT|VINCENT]] || Vincent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of these protocols can be activated separately. If you want, you can activate all protocols. If you need only one protocol, you can disable all others. It will only be compiled the code that has been selected by the user.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] source for the AVR and PIC MCUs has been created as part of the [[Word Clock]] project.&lt;br /&gt;
&lt;br /&gt;
=== Thread in Forum ===&lt;br /&gt;
&lt;br /&gt;
Intention for an own IRMP article is the following thread in Projects&amp;amp;Code [http://www.mikrocontroller.net/topic/162119 IRMP - Infrared Multi Protocol Decoder] (in german language).&lt;br /&gt;
&lt;br /&gt;
== IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC protocol, RGB remote control, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Some vendors use their own proprietary protocol, such as Sony, Samsung and Matsuhita. Philips has developed [[IRMP_-_english#RC5 + RC5X|RC5]] and of course used for own purposes.&lt;br /&gt;
[[IRMP_-_english#RC5 + RC5X|RC5]] was seen in Europe as &#039;&#039;that&#039;&#039; standard IR-protocol which was adopted by many european vendors. Nowadays is [[IRMP_-_english#RC5 + RC5X|RC5]] nearly nowhere used - it can be ticked as &amp;quot;dead&amp;quot;. Although the successor [[IRMP_-_english#RC6_+_RC6A|RC6]] is used in actual european hardware, it is also used rarely.&lt;br /&gt;
&lt;br /&gt;
Also japanese vendors tried to establish an own standard, the so called [[IRMP_-_english#KASEIKYO|Kaseikyo]]- (or also &amp;quot;Japan-&amp;quot;) protocol. This is with a bitlength of 48 bits more versatile. But it has no general acceptance until today - even if you find it in some appliances.&lt;br /&gt;
&lt;br /&gt;
Nowadays the [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol is used (also mainly in japanese devices) - indeed in various premium and NoName products. I estimate the market share to 80 % for the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-protocol. Nearly all remotes in my daily use utilize the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-IR-Code. This starts at the TV-set, goes over the DVD-player to the Notebook remote and reaches up to NoName-Multimedaia-Harddrive, just to mention a few samples.&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports the following IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance|Pulse Distance]], typ. Example: [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Width|Pulse Width]], typ. Example: [[IRMP_-_english#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP_-_english#Biphase|Biphase (Manchester)]], typ. Example: Philips [[IRMP_-_english#RC5_+_RC5X|RC5]], [[IRMP_-_english#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Position|Pulse Position (NRZ)]], typ. Example: [[IRMP_-_english#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance Width|Pulse Distance Width]], typ. Example: [[IRMP_-_english#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
The pulses are modulated - usually with 36 kHz or 38 kHz - to reduce environment influences such as Indoorlightning or sunlight.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Distance Coding can be discovered by the following rule:&lt;br /&gt;
&lt;br /&gt;
* there is only &#039;&#039;&#039;one pulse length&#039;&#039;&#039; and there are &#039;&#039;&#039;two different pause lengths&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Width Coding can be discovered by the following rule: &lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;only one pause length&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
This is a mix from Pulse Distance and Pulse Width Coding, so:&lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;two different pause lengths.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
In Biphase Coding the order of pulse and pause gives the bit value.&lt;br /&gt;
Therefore a Biphase-Coding can be discovered by this criteria:&lt;br /&gt;
&lt;br /&gt;
* there is exactly &#039;&#039;&#039;one&#039;&#039;&#039; pause- and one pulse length, as well as the &#039;&#039;&#039;double&#039;&#039;&#039; pulse/pause length&lt;br /&gt;
&lt;br /&gt;
Usually the length for the pulse and pause are equal, that means the signal shape is symmetric. But IRMP knows also protocols which use different puls/pause lengths. This case is for example the [[IRMP_-_english#A1TVBOX|A1TVBOX]]-protocol.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
The pulse position coding is known from usual UART&#039;s. Every bit has a fixed length here. Depending on the value (0 or 1), it is a pulse or a pause.&lt;br /&gt;
&lt;br /&gt;
Typical criteria for a &#039;&#039;&#039;pulse position protocol&#039;&#039;&#039; is:&lt;br /&gt;
* there are &#039;&#039;&#039;multiples&#039;&#039;&#039; of a basic pulse/pause length&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A tabular listing of different IR-protocols can be found here: [[IRMP_-_english#IR_Protocols_in_Detail|IR Protocols in Detail]].&#039;&#039;&#039;&lt;br /&gt;
The specified timings are typical values. In some remotes they differ up to 40 % in real life. Therefore [[IRMP_-_english#top|IRMP]] uses minimum/maximum limits to be tolerant with the timing.&lt;br /&gt;
&lt;br /&gt;
== Protocol Detection ==&lt;br /&gt;
&lt;br /&gt;
The most of the [[IRMP_-_english#top|IRMP]] decoded protocols have something in common: they show a start bit which is unique for their timing.&lt;br /&gt;
&lt;br /&gt;
According to this start bit timing the most protocols are discriminated. [[IRMP_-_english#top|IRMP]] measures the timing of the start bit and reorders its timing tables &amp;quot;on-the-fly&amp;quot; for the discovered protocol. So the following bits can be read sequential without the need of storing a complete frame.&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] does not wait for reading a complete frame to analyze, it starts decoding after the first pulse detection.&lt;br /&gt;
&lt;br /&gt;
If the first read start bit is not unique, [[IRMP_-_english#top|IRMP]] follows multiple possible protocols. If for plausible reasons one protocol is no more possible this track will be dropped.&lt;br /&gt;
&lt;br /&gt;
The detection is implemented as a [[Statemachine|state machine]], which is called interrupt driven with an frequency of typically 15.000 per second. the [[Statemachine|state machine]] knows the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the first pulse length of the start bit&lt;br /&gt;
* detect the pause length of the start bit&lt;br /&gt;
* detect the pulse length of the first data bit&lt;br /&gt;
&lt;br /&gt;
After that, the pulse/pause length of the start bit are known. Now all enabled protocols are searched for this length. If a protocol matches, the timing table for this protocol is loaded and the following bits are checked if the pulse/pause timing still fit to the limis.&lt;br /&gt;
&lt;br /&gt;
So the [[Statemachine|state machine]] continues with the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the pauses of the data bits&lt;br /&gt;
* detect the pulse length of the data bits&lt;br /&gt;
* check timing. If different, switch back to another valid IR protocol, otherwise return&lt;br /&gt;
* detect the sop bit if present in the protocol&lt;br /&gt;
* check data for plausibility, like CRC or other redundant data bits&lt;br /&gt;
* convert data to device address and command&lt;br /&gt;
* detect code repetition by long key press, set according flag&lt;br /&gt;
&lt;br /&gt;
Indeed the [[Statemachine|state machine]] is even more complex because some protocols have no start bit (e.g. [[IRMP_-_english#DENON|Denon]]) or have multiple start bits (4 in [[IRMP_-_english#B.26O|B&amp;amp;O]]) or have within the frame another sync bit (z.B. [[IRMP_-_english#SAMSUNG|Samsung]]). These extra conditions are caught in the code by protocol specific &amp;quot;special cases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Switching to an other protocol can happen multiple times during receiving of a frame, f.e. from [[IRMP_-_english#NEC42|NEC42]] (42 Bit) to [[IRMP_-_english#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), when a premature sync bit was detected. Or from [[IRMP_-_english#NEC + extended NEC|NEC]]/[[IRMP_-_english#NEC42|NEC42]] (32/42 Bit) to [[IRMP_-_english#JVC|JVC]] (16 Bit) when the stop bit premature occured. It is getting difficult when two possible protocols after the detection of the start bit use different codings, e.g. when the one protocol uses a [[IRMP_-_english#Pulse Distance|Pulse Distance Coding]] and the other uses a [[IRMP_-_english#Biphase|Biphase Coding (Manchester)]]. In this case [[IRMP_-_english#top|IRMP]] stores the necessary bits for both codings and releases later the one or the other.&lt;br /&gt;
&lt;br /&gt;
Furthermore some remotes are transmitting in particular protocols for redundance reasons (error detection) or for long key presses repetition frames. These will be discriminated by IRMP: the necessary frames for error detection are checked by IRMP, but not passed to the application. The other will be detected as long key press and flagged by IRMP.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Date: 2018-08-29&lt;br /&gt;
&lt;br /&gt;
Download of stable version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] &amp;amp; [[IRSND_-_english|IRSND]] is also available by SVN: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP in SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP on GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The version in the SVN can be a newer version than the stable version stored in Irmp.zip. In doubt, use the download link of Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see the history of the software changes here: [[IRMP_-_english#Software_History|Software History]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The source code can be easily compiled for AVR MCUs by loading the project file irmp.aps in AVR Studio 4.&lt;br /&gt;
&lt;br /&gt;
For other development environments it is simple to create a project or makefile. The source includes:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - IR-decoder core&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - all protocoll definitions&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - target independant definitions for AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include file for the application&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - user configuration&lt;br /&gt;
&lt;br /&gt;
Sample applications (main functions and timer configurations):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR with output on UART&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;Important: include only irmp.h to your application:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other include files are included within irmp.h. See also the sample application irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the preprocessor constant &#039;&#039;&#039;F_CPU in project or makefile&#039;&#039;&#039; must be defined. This should have at least the value of 8000000UL, processor speed should be at least 8 MHz. This applies to AVR targets and not for MCUs with PLL. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] is also running on PIC processors. For the PIC-CCS compiler are already the necessary preprocessor defines set, so that [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be directly used in the CCS environment. Only a short interrupt service routine like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
must be added. The Interrupt period time must be set to 66 µs (15 kHz).&lt;br /&gt;
&lt;br /&gt;
For AVR processors you will find an example for the usage of [[IRMP_-_english#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. The main things are the [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]] initializing of the timer and the processing of received IR commands. The received protocoll, the device address and the command will be output on the HW-UART.&lt;br /&gt;
&lt;br /&gt;
For the Stellaris LM4F120 Launchpad from TI (ARM Cortex M4) is a propriate timer init function already integrated in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used also with STM32 microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Another new implementation is available on the mbed platform.&lt;br /&gt;
=== avr-gcc Optimizations ===&lt;br /&gt;
&lt;br /&gt;
From version avr-gcc 4.7.x the option [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] can be used to make the call of the external function irmp_ISR() from the main ISR more efficent. This improves the performance of the ISR a little.&lt;br /&gt;
&lt;br /&gt;
Add the following compiler- and linker options:&lt;br /&gt;
&lt;br /&gt;
* additional compiler option: -flto&lt;br /&gt;
* additional linker options: -flto -Os&lt;br /&gt;
&lt;br /&gt;
If you forget the additional linker option -Os, the binary will be significant larger as it will no be optimized further. Also the option -flto must be passed to the linker, otherwise the link time optimization will not work.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration of [[IRMP_-_english#top|IRMP]] is done by settings in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] :&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#F_INTERRUPTS|number of interrupts per second]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_SUPPORT_xxx_PROTOCOL|supported IR protocols]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|hardware pin for IR receiver]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_LOGGING|IR logging]]&lt;br /&gt;
&lt;br /&gt;
=== Adjustments in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] will decode all protocols listed above in one ISR. For this, there are some settings necessary. These are set in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h].&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Number of interrupts per second. Should be set to a value from 10000 to 20000. The higher the value, the better the resolution and therefore the quality of detection. But a higher interrupt rate means also higher CPU load. The value of 15000 is in most cases a good compromise.&lt;br /&gt;
&lt;br /&gt;
Standardvalues:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On AVR controllers is a timer1 with 16 bit resolution used in the example [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. If for any reasons timer1 is not available, you can also use timer2 with 8 bit resolution.&lt;br /&gt;
&lt;br /&gt;
In this case timer2 will be configured as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example is valid for ATmega88/ATmega168/ATmega328. For other AVR MCUs check the datasheet.&lt;br /&gt;
&lt;br /&gt;
You must not forget to adjust the ISR for timer2 as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Here you can select which protocols should be supported by [[IRMP_-_english#top|IRMP]]. Standardprotocols are activated by default.&lt;br /&gt;
&lt;br /&gt;
Would you like to turn on more protocols or turn off some other for memory saving reasons, then the corresponding values in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] must be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [[IRMP_-_english#top|IRMP]] supported IR protocol consumes the noted amount of code. Here you can apply optimizations: for example the modulation frequency of 455 kHz for the [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol is far away from the frequencies that are used by other protocols. Maybe you need a different IR receiver, otherwise you could disable these protocols. For example you cannot receive a [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol (455kHz) with a TSOP1738 / TSOP 31238.&lt;br /&gt;
&lt;br /&gt;
Furthermore the protocols [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP_-_english#FDC|FDC]]/[[IRMP_-_english#RCCAR|RCCAR]] are only reliable detected at a frequency starting at 15 kHz. For [[IRMP_-_english#LEGO|LEGO]] it is even 20 kHz. When you want to use these protocols, you must adjust [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]]. Otherwise, during compilation you will get a warning and the corresponding protocols are automatically disabled.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
This constant defines the pin where the IR receiver is connected.&lt;br /&gt;
&lt;br /&gt;
Default value is PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two values must match your hardware configuration.&lt;br /&gt;
&lt;br /&gt;
This applies also to STM32 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the corresponding section for STM8 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PIC controllers there is only the define for &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - depending on compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using ChibiOS HAL, define a pin with the name &#039;&#039;&#039;IR_IN&#039;&#039;&#039; in your board config (board.chcfg) of ChibiOS&lt;br /&gt;
and regenerate the board files. When you want to use another name for the pin, change the constant &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039;&lt;br /&gt;
in irmpconfig.h. Use the name of the pin from the board config and prefix it with &amp;quot;LINE_&amp;quot;, as IRMP is using&lt;br /&gt;
the &amp;quot;line&amp;quot;-variant of the PAL-interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you turn on callbacks, on any level change at the input the callback function is called. This could be use to visualize incoming IR signals by driving another output pin.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normally the irmp_ISR() function is called continuously with the frequency F_INTERRUPTS (10-20kHz). The controller&lt;br /&gt;
can hardly switch to an energy-saving sleep mode, or must constantly wake up from it. If power consumption is important, e.g. for battery operation, this approach is not optimal.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; is activated, IRMP detects if no IR transmission is ongoing and then calls the function &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039;. This is controller-specific and must be provided and linked by the user. The controller can then be put into sleep while there is no ongoing transmission, thus reducing energy consumption.&lt;br /&gt;
&lt;br /&gt;
It is recommended to deactivate the timer interrupt in irmp_idle() and to activate a pinchange interrupt instead. Then the controller can be sent to sleep. If a falling edge is detected on the IR input pin, the pinchange interrupt is deactivated, the timer is activated again and irmp_ISR() is called immediately. You can find an example for the use of irmp_idle() in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
Using IRMP purely with pinchange interrupts and without timer interrupts is not supported.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
When using IRMP with ChibiOS/RT or ChibiOS/NIL, you can use their Event-module to wake a thread as soon as new&lt;br /&gt;
IR data was received and decoded.&lt;br /&gt;
&lt;br /&gt;
Set the &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; constant in irmpconfig.h to 1 to enable this. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definies the&lt;br /&gt;
value in the event bitmask that should symbolize the IRMP event. Use &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; to define&lt;br /&gt;
the variable name of the thread pointer that the event is sent to.&lt;br /&gt;
&lt;br /&gt;
Change irmpconfig.h like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use the event in your ChibiOS-project like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // use data in irmp_data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
With IRMP_LOGGING the logging of received IR frames can be turned on.&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation can be found here: [[IRMP_-_english#Scanning_of_unknown_IR_Protocols|Scanning of unknown IR Protocols]].&lt;br /&gt;
&lt;br /&gt;
=== IRMP in Practice ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] supported protocols use partly variable, partly fixed bit length from 2 up to 48 bits. These will be described by preprocessor defines.&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] separates these IR frames always into 3 sections:&lt;br /&gt;
&lt;br /&gt;
 1. protocol ID&lt;br /&gt;
 2. address or vendorcode&lt;br /&gt;
 3. command&lt;br /&gt;
&lt;br /&gt;
with this function&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
you can recall a decoded message. The return value is 1 when a message has been received, otherwise it is 0. In the first case the struct members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contain valid information.&lt;br /&gt;
&lt;br /&gt;
That means: finally you&#039;ll get simply three values (protocol, address and command) that can be checked with an if or switch statement. &lt;br /&gt;
Here is a sample decoder which checks for key 1-9 on a remote:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are possible constants for irmp_data.protocol, see also [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values of address and the command code of an unknown remote can be received and printed over UART or LCD. Then these values can be used hard coded in your decoder routine. Or you write a teaching routine, where you need to press a key once to store the code in an EEPROM. A sample for this can be found in [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Another [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup example main function] is included in the zip file, showing also the timer initialization.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Debouncing&amp;quot; of Keys ===&lt;br /&gt;
&lt;br /&gt;
To distinguish between long key press or a single press, the bit mask IRMP_FLAG_REPETITION exists. This will be set in struct member &#039;&#039;&#039;flags&#039;&#039;&#039; when a key on the remote is pressed for longer time and therefore the same command is repeated in short periods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // long key press&lt;br /&gt;
      // either:&lt;br /&gt;
      //   ignore the (repeated) key&lt;br /&gt;
      // or:&lt;br /&gt;
      //   use this information for a repeat function&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // key was pressed again&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be used to &amp;quot;debounce&amp;quot; the keys 0-9 by ignoring commands with bit IRMP_FLAG_REPETITION set. For keys like &#039; VOLUME+&#039; or &#039;VOLUME-&#039; using the repetition could be useful, maybe to [[LED-Fading|fade a LED]].&lt;br /&gt;
&lt;br /&gt;
If you want to decode only singe keys, you can reduce the block above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Its a new key&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mode of Operation ==&lt;br /&gt;
&lt;br /&gt;
The  &amp;quot;Working Horse&amp;quot; of [[IRMP_-_english#top|IRMP]] is the interrupt service routine irmp_ISR() which should be called 15000 times per second. Is this rate different, the constant [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] needs to be adjusted.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detects first the length and the form of the startbit(s) and determines the used protocols by this information. As soon as the protocol was identified, the further bits are parameterized to read the following bits most efficient until the IR command is complete.&lt;br /&gt;
&lt;br /&gt;
Just to stop slashers:&lt;br /&gt;
&lt;br /&gt;
I know that the ISR is quite large. But as it acts as a state machine, the effective executed code per cycle is relative small. While it is &amp;quot;dark&amp;quot; (and that is the case for the most time ;-)) the spent time is vanishing short. In the WordClock project for example are called 8 ISR&#039;s with the same timer, there is irmp_ISR() only one amongst many others. For at least 8 MHz CPU clock no timing problems occured. Therefor I see really no problem in the length of the ISR.&lt;br /&gt;
&lt;br /&gt;
A crystal is not a neccessary must, it works well with the internal AVR oscillator. Remember to set the correct fuses for the CPU to run at 8 MHz, check [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] for correct values for an ATMEGA88.&lt;br /&gt;
&lt;br /&gt;
== Scanning of unknown IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
Changing in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the value for [[IRMP_-_english#IRMP_LOGGING|IRMP_LOGGING]] to 1, then a logging in [[IRMP_-_english#top|IRMP]] will be turned on: the bright- and darkphases will be sent via UART with 9600 bit/s: 1=dark, 0=bright. Maybe the constans in the functions uart_init() and uart_putc() must be adjusted, this depends on the used AVR MCU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark: for PIC-processors there is an own logging module named [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. This makes it possible to log via USB. This applies not to the AVR version&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you record these protocol scans with a terminal program and save them as a textfile, you can use these files for analyzing the frames in ordner to add a yet unknown protocol to [[IRMP_-_english#top|IRMP]] - see next chapter.&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that is not supported by [[IRMP_-_english#top|IRMP]] you can send me ([http://www.mikrocontroller.net/user/show/ukw ukw]) the scan files. Then I can check if the protocol fits into the IRMP concepts and adapt the sources if applicable.&lt;br /&gt;
&lt;br /&gt;
== IRMP under Linux and Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be compiled under Linux for testing IR scans in textfiles. In the subdirectory &#039;IR-Data&#039; you will find such files that you can use as input files for [[IRMP_-_english#top|IRMP]].&lt;br /&gt;
&lt;br /&gt;
The compilation of [[IRMP_-_english#top|IRMP]] is started by:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
This will generate 3 IRMP versions:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version for 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version for 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version for 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Starting IRMP ===&lt;br /&gt;
&lt;br /&gt;
The calling syntax is:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
The given options are exclusive, that means only one option per call is valid:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             print a list with pulses and pauses&lt;br /&gt;
   -a analyze           analyse the puls/pauses and write a &amp;quot;spectrum&amp;quot; in ASCII format&lt;br /&gt;
   -v verbose           verbose output&lt;br /&gt;
   -p  Print Timings    print a timing table for all protocols&lt;br /&gt;
&lt;br /&gt;
Samples:&lt;br /&gt;
&lt;br /&gt;
=== Normal Output ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output Lists ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analysing ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you see the measured times of all pulses and pauses as (horizontal) bell shaped curves, which of course are not quite ideal displayed due to the ASCII formatting. The smaller the measured channels, the better is the timing of the remote.&lt;br /&gt;
&lt;br /&gt;
The above output can be read as:&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pulse length between 9000 and 9200 µs, in average 9102 µs. The deviation from this average is about 1.1 %&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pause length between 4300 and 4500 µs, the average is 4424 µs. The error is about 2.8 %.&lt;br /&gt;
&lt;br /&gt;
* the pulse length of a databit is between 500 and 700 µs, in average 650 µs, the error is (quite large!) 23.1 %&lt;br /&gt;
&lt;br /&gt;
Further there are two more pauses with different length (for bits 0 and 1). Checking this I leave to the willing reader ;-)&lt;br /&gt;
&lt;br /&gt;
=== Verbose Output ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting under Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used as well under Windows, like:&lt;br /&gt;
&lt;br /&gt;
* start command line console&lt;br /&gt;
* change to directory &#039;irmp&#039;&lt;br /&gt;
* enter:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
The same options apply as for the Linux version.&lt;br /&gt;
&lt;br /&gt;
=== Long Outputs ===&lt;br /&gt;
&lt;br /&gt;
As some outputs are pretty large, it is recommended to redirect the output to a file or filter for paging:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Remote Controls ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protocol || Name || Device || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports more and more also camera remotes like:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
The command variety isn&#039;t really large. Usually the cameras understand only the command:&lt;br /&gt;
&amp;quot;Trigger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is a short table for [[IRMP_-_english#PENTAX|PENTAX]] cameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Command || Function&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Trigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || change Zoomlevel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because there is no address designated in the [[IRMP_-_english#PENTAX|PENTAX]]-protocol, this should be set for sending in [[IRSND_-_english|IRSND]] to 0x0000. You should also use a crystal in this case because especially the Nikons are very fussy regarding the timing.&lt;br /&gt;
&lt;br /&gt;
== IR Keyboards ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]]  supports from version 1.7.0 also IR keyboards, namely the FDC-3402 &amp;lt;s&amp;gt; from www.pollin.de (partno. 711 056) for less than 2 Euro.&amp;lt;/s&amp;gt; (not available as of 19.09.2017 )&lt;br /&gt;
&lt;br /&gt;
On detection of a key press the following data is returned:&lt;br /&gt;
&lt;br /&gt;
 Protocol-Number  (irmp_data.protocol): 18&lt;br /&gt;
 Address          (irmp_data.address) : 0x003F&lt;br /&gt;
&lt;br /&gt;
As command (irmp_data.command) the following values are returned:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special keys left side:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above values are for pressing a key. On release,  [[IRMP_-_english#top|IRMP]] sets also Bit 8 (0x80) in the command.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F&lt;br /&gt;
&lt;br /&gt;
Exception for the ON / OFF key: This one sends only for key press a code, not for release.&lt;br /&gt;
&lt;br /&gt;
Is a key pressed for a longer time, it will be notified in irmp_data.flag&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x00&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When key combinations (like a capital &#039;A&#039;) are pressed, then the return values are a sequence like this:&lt;br /&gt;
&lt;br /&gt;
      Left SHIFT-key pressed:    0x0002&lt;br /&gt;
      Key &#039;a&#039; pressed:           0x001F&lt;br /&gt;
      Key &#039;a&#039; released:          0x009F&lt;br /&gt;
      Left SHIFT-key released:   0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] you will find a function get_fdc_key() for the Linux version, which can be used as a template to convert the FDC keycodes into the corresponding ASCII codes. This function can be used either local on the MCU to decode the keycodes, or on the hostsystem (e.g. PC) where the IRMP data structure is sent to. Therefore the function incl. preprocessor constands should be copied to your application code.&lt;br /&gt;
&lt;br /&gt;
Here is an excerpt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
 &lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And at least an example for the usage of function get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All non-printable characters are coded as:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Key               || Constant                || Value&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menu              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Back              || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Forward           || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adress            || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Window            || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Page           || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| New Page          || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Font              || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Print             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| On/Off            || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Insert            || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Delete            || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| End               || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor right      || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor down       || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Page up           || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Page down         || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Left Mousebutton  || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Right Mousebutton || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The function get_fdc_key() considers the holding of key pressed of Shift-, Ctrl- and ALT. For this reason not only the writing of capital letters works, but also the selection of special characters with the key combination ALT + key, e.g. ALT + m -&amp;gt; µ or ALT + q -&amp;gt; @. Also you can send CTRL-A to CTRL-Z by using the Ctrl key. The Caps Lock key is ignored, as I regard this key as the most unnecessary key at all ;-)&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== IR Protocols in Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC Protocol|NEC + extended NEC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data NEC || 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data ext. NEC || 16 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 9000µs pulse, 2250µs pause, 560µs pulse, ~100ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC16 Protocol (JVC)|JVC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 12 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause, 6000µs pause if keyboard repetition&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 8 address bits + 1 sync bit + 8 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 560µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 42 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 address bits + 13 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 110ms (beginning from start bit), 9000µs pulse, 2250µs pause, 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#ACP24 Protocol|ACP24]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 70 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 70 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 390µs pulse, 950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 390µs pulse,  950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 390µs pulse, 13000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 390µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LGAIR Protocol|LGAIR]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 28 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 16 command bits + 4 checksum bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first (&#039;&#039;&#039;differing&#039;&#039;&#039; to [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SAMSUNG Protocol|SAMSUNG]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data(1) bits + 1 sync bit + 20 data(2)-bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data(1) || 16 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data(2) || 4 ID bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || repetition after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || Repetition after approx. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 32 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 8 Bits + 8 inverted Bits + 8 Bits + 8 inverted Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || one after approx. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 45 msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#MATSUHITA Protocol|MATSUSHITA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 customer bits + 6 command bits + 12 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 22 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 11 command bits + 11 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#KASEIKYO_Protocol_.28.22Japan Protocol.22.29|KASEIKYO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 customer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 ID bits + 8 parity bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3380µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 423µs pulse,  423µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 423µs pulse, 1269µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 423µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 80ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start Bits + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 3 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80EXT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 4 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 3637µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Denon Protocol|DENON]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (in practice, theoretically: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 5 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 6 data bits + 2 extension bits + 2 data construction bits (normal: 00, inverted: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || no Start Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse, 775µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 310µs pulse, 1780µs pause (in practice, theoretically: 275µs pulse, 1900µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 310µs pulse (310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse)&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || after 65ms with inverted command bits (data construction bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || both frames after 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 11100000 + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1060µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  437µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 start bits + 16 data bits + 1 trailer bit + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 1 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 2 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 3 || 200µs pulse, 15425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 4 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 200µs pulse, 9175µs pause&lt;br /&gt;
|-&lt;br /&gt;
| R Bit || 200µs pulse, 6050µs pause, repeats the last bit&lt;br /&gt;
|-&lt;br /&gt;
| Trailer Bit || 200µs pulse, 12300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 200µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 40 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 12 x 0 Bits + 4 press/release bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2085µs pulse, 966µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 300µs pulse,  220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 300µs pulse, 715µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 300µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Press Key || press/release bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Release Key || press/release bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of approx. 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 2 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 2 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse,  1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 3500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 56 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 24 bits (010000000000010000000001) + 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3600µs pulse, 1600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 565µs pulse,  316µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 565µs pulse, 1140µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 565µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 6 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 1000µs pulse,  1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1000µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 1000µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 210µs pulse, 6218µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pulse,  1400µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 12 command bits + 4 crc bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 1026µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse,  263µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 553µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#VINCENT|VINCENT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 8 command bits + 8 repeated command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2500µs pulse, 4600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1540µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 13 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse,  900µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 450µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RCMM_Protocol|RCMM]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 start bit + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM32 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM24 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM12 || 4 address bits (= 2 mode bits + 2 device bits) + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 500µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 00 Bits || 230µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 01 Bits || 230µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 10 Bits || 230µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 11 Bits || 230µs pulse, 720µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 230µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SIRCS_Protocol|SIRCS]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequency ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 12-20 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 7 command bits + 5 address bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1200µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || twice after approx. 25ms, that means: 2nd und 3rd Frame&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || starting with 4th identical frame, distance approx. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse distance Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse, 1300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th etc. indentical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
This protocol is very similar to [[IRMP_-_english#NUBERT|NUBERT]], but here it will be sent only one frame. Additionally there are 11 instead of 10 data bits and no stop bit. The pause time between frame repetitions is substantial lower.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 11 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 380µs pulse, 1280µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 6,6ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1250µs pulse, 440µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 440µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after approx. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th ... identical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 7 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 930µs pulse, 2790µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 3 times after 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC5 and RC5x Protocol|RC5 + RC5X]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start Bits + 12 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5 || 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 start bit + 13 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5X || 1 inverteds command bit + 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 data bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 14 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 inverteds command bit + 1 toggle bit + 5 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC6 and RC6A Protocol|RC6 + RC6A]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (000) + 1 toggle bit + 16 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (110) + 1 toggle bit + 31 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6 || 8 address bits + 8 Command Bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A || &amp;quot;1&amp;quot; + 14 customer bits + 8 system bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 mode bits (&amp;quot;110&amp;quot;) + 1 toggle bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 toggle(!) + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2666µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 444µs pause, 444µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 444µs pulse, 444µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Grundig Protocol|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms pause + N Info-Frames + 117,76ms pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 pre bit + 1 start bit + 9 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Grundig || 9 command bits + 0 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Nokia || 8 command bits + 8 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#IR60_.28SDA2008_and_MC14497P.29|IR60]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 start bit + 101111 + 0 stop bits + 22ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Data Frame || 1 start bit + 7 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz? (Merlin-Tastatur mit Ruwido protocol: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 start bit + 22 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 start bit + 17 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Siemens || 11 address bits + 10 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Data Ruwido || 9 address bits + 7 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 275µs pause, 275µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once with repeat bit set (?)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 16 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 250µs pulse, 150µs + 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 250µs pulse, 150µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetric&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 210µs pulse, 210µs + 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 210µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 address bits + 2 special bits +  6 command bits + 4 special bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pause, 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 2 additinal frames with special bits set&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || only repetition of the 2nd frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protocols ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 3 address bits + 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 800µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Length || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes of IRMP in 3.0.x ===&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 2018-08-29: Port to ChibiOS&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 2018-02-19: corrected handling of irmp_flags for invalid frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 2017-08-25: New protocol: IRMP16 for transparent 16 bit data communication&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 2016-11-18: Corrected buffer overflow in irmp-main-avr-uart.c&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-19: New protocol [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-09: New protocol [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (air conditioner)]]&lt;br /&gt;
* 2016-09-09: Some modifications for Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 2016-01-16: Some corrections of port to ESP8266&lt;br /&gt;
* 2016-01-16: Added port to MBED&lt;br /&gt;
* 2016-01-16: Added several hardware dependent example main source files&lt;br /&gt;
&lt;br /&gt;
=== Older Versions ===&lt;br /&gt;
&lt;br /&gt;
* 2015-11-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 2015-11-17: Port to ESP8266&lt;br /&gt;
* 2015-11-17: Port to Teensy (3.x)&lt;br /&gt;
* 2015-11-10: Added support for STM8 microcontroller&lt;br /&gt;
* 2015-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
* 2015-06-15: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ACP24|ACP24]]&lt;br /&gt;
* 2015-05-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#S100|S100]]&lt;br /&gt;
* 2015-05-29: Some smaller corrections&lt;br /&gt;
* 2015-05-28: Added Logging for XMega&lt;br /&gt;
* 2015-05-28: Timing corrections  for FAN protocol&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#MERLIN|MERLIN]]&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FAN|FAN]]&lt;br /&gt;
* 2015-05-18: Added F_CPU macro for STM32L1XX&lt;br /&gt;
* 2015-05-18: Some corrections for XMega port&lt;br /&gt;
* 2015-04-23: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* 2015-04-23: Port to AVR XMega&lt;br /&gt;
* 2014-09-19: Bugfix: added missing newline before #else&lt;br /&gt;
* 2014-09-18: Added logging for ARM STM32F10X&lt;br /&gt;
* 2014-09-17: Corrected PROGMEM access to array irmp_protocol_names[].&lt;br /&gt;
* 2014-09-15: Changed timing tolerances for [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol&lt;br /&gt;
* 2014-09-15: Moved  irmp_protocol_names to flash, additional UART routines in irmp-main-avr-uart.c&lt;br /&gt;
* 2014-07-21: Port to PIC 12F1840&lt;br /&gt;
* 2014-07-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 2014-07-09: Some small corrections&lt;br /&gt;
* 2014-07-01: Added logging for ARM_STM32F4XX&lt;br /&gt;
* 2014-07-01: IRMP port for PIC XC8 compiler, removed variadic macros because of stupid XC8 compiler :-(&lt;br /&gt;
* 2014-06-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LGAIR|LGAIR]]&lt;br /&gt;
* 2014-05-30: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SPEAKER|SPEAKER]]&lt;br /&gt;
* 2014-05-30: Optimized timings for [[IRMP_-_english#SAMSUNG|SAMSUNG]] protocol&lt;br /&gt;
* 2014-02-20: Corrected decoding of [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2014-02-19: &#039;&#039;&#039;New protocols&#039;&#039;&#039;: [[IRMP_-_english#RCMM|RCMM32, RCMM24 and RCMM12]]&lt;br /&gt;
* 2014-09-17: Optimized timing for [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: Optimized detection of [[IRMP_-_english#ORTEK|ORTEK (Hama)]] frames&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 2013-03-12: Changed timing tolerancies for [[IRMP_-_english#RECS80|RECS80]]- and  [[IRMP_-_english#RECS80EXT|RECS80EXT]] protocol&lt;br /&gt;
* 2013-01-21: Corrected detection of repetition frame beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2013-01-17: Corrected frame detection beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-12-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 2012-12-07: Improved detection von [[IRMP_-_english#DENON|DENON]] repetition frame&lt;br /&gt;
* 2012-11-19: Port to Stellaris LM4F120 TI Launchpad (ARM Cortex M4)&lt;br /&gt;
* 2012-11-06: Corrected [[IRMP_-_english#DENON|DENON]] frame detection&lt;br /&gt;
* 2012-10-26: Some timer corrections and adaptations for Arduino&lt;br /&gt;
* 2012-07-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#BOSE|BOSE]]&lt;br /&gt;
* 2012-06-18: Added support for ATtiny87/167&lt;br /&gt;
* 2012-06-05: Some smaller corrections of port to ARM STM32&lt;br /&gt;
* 2012-06-05: Correction of include in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 2012-06-05: Bugfix, if only [[IRMP_-_english#NEC_+_extended_NEC|NEC]] and [[IRMP_-_english#NEC42|NEC42]] activated&lt;br /&gt;
* 2012-05-23: Port to ARM STM32&lt;br /&gt;
* 2012-05-23: Bugfix frame detection for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-02-27: Bugfix in IR60-Decoder&lt;br /&gt;
* 2012-02-27: Bugfix in CRC calculation of  [[IRMP_-_english#KASEIKYO|KASEIKYO]] frames&lt;br /&gt;
* 2012-02-27: Port to C18 Compiler for PIC microcontrollers&lt;br /&gt;
* 2012-02-13: Bugfix: most significant bit in Address wrong in [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol, if [[IRMP_-_english#NEC42|NEC42]] protocol activated, too&lt;br /&gt;
* 2012-02-13: Corrected timing of [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol&lt;br /&gt;
* 2012-02-13: [[IRMP_-_english#KASEIKYO|KASEIKYO]]: Genre2 bits will be now stored in upper nibble of flags&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#KATHREIN|KATHREIN]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#THOMSON|THOMSON]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LEGO|LEGO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC16|NEC16]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC42|NEC42]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NETBOX|NETBOX]]&lt;br /&gt;
* 2011-09-20: Port to ATtiny84 and ATtiny85&lt;br /&gt;
* 2011-09-20: Improved key repetition detection in [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
* 2011-09-20: Improved decoding of [[IRMP_-_english#Biphase|Biphase]] protocols&lt;br /&gt;
* 2011-09-20: Fixed some smaller bugs in [[IRMP_-_english#RECS80|RECS80]] decoder&lt;br /&gt;
* 2011-09-20: Corrected detection of additional bits in SIRCS protocol&lt;br /&gt;
* 2011-01-18: Some corrections for [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2011-01-18: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
* 2011-01-18: [[IRMP_-_english#SIRCS|SIRCS]]: additional bits (&amp;gt;12) will be stored in address&lt;br /&gt;
* 2011-01-18: Some timing corrections for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-09-04: Bugfix for F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 2010-09-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 2010-08-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#JVC|JVC]]&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: genre bits will be now stored&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: Improved handling of repetition frames&lt;br /&gt;
* 2010-08-29: Improved support of [[IRMP_-_english#APPLE|APPLE]] protocols.&lt;br /&gt;
&lt;br /&gt;
* 2010-07-01: Bugfix: added a timeout for [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames. This avoids &#039;ghost commands&#039;.&lt;br /&gt;
&lt;br /&gt;
* 2010-06-26: Bugfix: deactivated [[IRMP_-_english#RECS80|RECS80]], [[IRMP_-_english#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] if interrupts frequency is low&lt;br /&gt;
&lt;br /&gt;
* 2010-06-25: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RCCAR|RCCAR]]&lt;br /&gt;
* 2010-06-25: Extended keyboard detection for [[IRMP_-_english#FDC|FDC]] protocol (IR keyboard)&lt;br /&gt;
* 2010-06-25: Interrupt frequency now up to 20kHz possible&lt;br /&gt;
&lt;br /&gt;
* 2010-06-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 2010-06-09: Corrected timing for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-06-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 2010-05-26: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 2010-05-26: Bugfix: detection of long keyboard press for [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-05-17: Bugfix [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol: corrected command bit mask&lt;br /&gt;
&lt;br /&gt;
* 2010-05-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 2010-05-16: Improved handling of automatic frame repetitions for [[IRMP_-_english#SIRCS|SIRCS]]-, [[IRMP_-_english#SAMSUNG32|SAMSUNG32]]-, and [[IRMP_-_english#NUBERT|NUBERT]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-04-28: Only some cosmetic code optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-04-16: Improved all timing tolerancies&lt;br /&gt;
&lt;br /&gt;
* 2010-04-12: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-29: Bugfix: detection of multiple [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
* 2010-03-29: Moved configuration data to  [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h]&lt;br /&gt;
* 2010-03-29: Introduced a program version in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 2010-03-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-16: Correction of RECS80 start bit timings&lt;br /&gt;
* 2010-03-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-15: Some optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-03-14: Port to PIC&lt;br /&gt;
&lt;br /&gt;
* 2010-03-11: Some adjustements for some ATMegas&lt;br /&gt;
&lt;br /&gt;
* 2010-03-07: Bugfix: Reset of state machine after a incomplete [[IRMP_-_english#RC5_+_RC5X|RC5]] frame&lt;br /&gt;
&lt;br /&gt;
* 2010-03-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#APPLE|APPLE]]&lt;br /&gt;
* 2010-03-05: Data  irmp_data.addr + irmp_data.command will be now stored in the bit order of the appropriate protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-03-04: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP_-_english#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol)&lt;br /&gt;
* 2010-03-04: Changed some timer tolerances changes of [[IRMP_-_english#SIRCS|SIRCS]]- and [[IRMP_-_english#KASEIKYO|KASEIKYO]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: corrected detection and suppression of automatic frame repetitions&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: device ID bits will be now stored in irmp_data.command (not irmp_data.address anymore)&lt;br /&gt;
* 2010-03-02: Enlargement of scan buffers (for logging)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-24: New variable flags in IRMP_DATA for detection of long key press&lt;br /&gt;
&lt;br /&gt;
* 2010-02-20: Bugfix [[IRMP_-_english#DENON|DENON]] protocol: repetition frame is now basically inverted&lt;br /&gt;
&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol-Varianten, z.&amp;amp;nbsp;B. [[IRMP_-_english#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#RC6_+_RC6A|RC6]]- and [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2010-02-19: Some improvements for [[IRMP_-_english#RC5_+_RC5X|RC5]] decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-13: Bugfix: Puls/Pause counters were 1 too low, now better detection of protokols with very short pulses&lt;br /&gt;
* 2010-02-13: Improved detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
&lt;br /&gt;
* 2010-02-12: New: [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-02-05: Eliminated a conflict between [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-01-07: First version&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
=== IR Abstract ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4&lt;br /&gt;
&lt;br /&gt;
=== SIRCS Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24 Protocol ===&lt;br /&gt;
&lt;br /&gt;
The ACP24-Protocol is used by Stiebel-Eltron-Aircons&lt;br /&gt;
&lt;br /&gt;
The structure of the 70 databits is :&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
These are converted into the following 16 bits from irmp_data.command:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Meaning of the symbols:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperature + 15 degree&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 degree&lt;br /&gt;
            0100        19 degree&lt;br /&gt;
            0101        20 degree&lt;br /&gt;
            0110        21 degree&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 degree&lt;br /&gt;
&lt;br /&gt;
    N    = Nightmode&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    VV   = fan, v must be 1!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      level 1&lt;br /&gt;
            01   1      level 2&lt;br /&gt;
            10   1      level 3&lt;br /&gt;
            11   1      Automatic&lt;br /&gt;
&lt;br /&gt;
    MMM  = Mode&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      turn off&lt;br /&gt;
            001  0      turn on&lt;br /&gt;
            001  1      cooling&lt;br /&gt;
            010  1      fan&lt;br /&gt;
            011  1      demist&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatic-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
To control the air con via [[IRSND_-_english|IRSND]], the following functions can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR Protocol ===&lt;br /&gt;
&lt;br /&gt;
The LG Air Con is controlled by an &#039;intelligent&#039; remote. These are the encoded data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Command                 AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16 Protocol (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG Protocol ===&lt;br /&gt;
&lt;br /&gt;
(was reverse engineered by several protocols (Daewoo or similar), so no direkt link to SAMSUNG documents is available)&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Daewoo-protocol, which uses the same principle of the sync-bits in the center of a frame, but words with different timings:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO Protocol (&amp;quot;Japan Protocol&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80 and RECS80 Extended Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5 and RC5x Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 and RC6A Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 and MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Other Protocols ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP on Youtube ==&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
== Other Artikels ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Infrared sender und receiver controlled via ip network with Android smartphone as remote control:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR Tester ===&lt;br /&gt;
&lt;br /&gt;
IR tester with LCD by Klaus Leidinger:&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller-projekte.de/Mikrocontroller/index.html&lt;br /&gt;
&lt;br /&gt;
=== IR Tester with AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
IR tester for Pollin AVR-NET-IO with Pollin ADD-ON Board:&lt;br /&gt;
&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR remote receiver by Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Receiver/Sender/Switch with Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR switch based on USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo controlled IR Sender ===&lt;br /&gt;
&lt;br /&gt;
Servo controlled IR Sender (adaptive) by Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Adaptive IR Remote Control ===&lt;br /&gt;
&lt;br /&gt;
Adaptive IR remote control by Robert and Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight by Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
STM8 Moodlight by Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity Mirror LED Ceiling Lamp ===&lt;br /&gt;
&lt;br /&gt;
Infinity Mirror LED ceiling lamp with remote control by Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Cinema Control ===&lt;br /&gt;
&lt;br /&gt;
Cinema control by Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Leading-Edge Control ===&lt;br /&gt;
&lt;br /&gt;
leading-edge control:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit as coffee bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino as IR Receiver ===&lt;br /&gt;
&lt;br /&gt;
Arduino as IR Receiver:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR Volume Control with Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
volume control with Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Shutdown RaspPI with IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP under RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED strip remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, a modular Firmware for AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind solver with LED stripes and IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control with ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library for STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP on STM32 - Construction Guidance ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Seminar Paper - Extension of Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Acknowledgment ==&lt;br /&gt;
&lt;br /&gt;
I thank Vlad Tepesch, Klaus Leidinger, Peter K., and Dániel Körmendi, who sent me many scan files of their IR remote controls.&lt;br /&gt;
&lt;br /&gt;
I thank Christian F. for his tipps relating to the port to PIC MCUs, gera for the port to PIC-C18 compiler, kichi (Michael K.) for the port to ARM STM32, Markus Schuster for the port to TI&#039;s Stellaris LM4F120 Launchpad (ARM Cortex M4), Matthias Frank for the port to XMega, Wolfgang S. for the port to ESP8266, Achill Hasler for the port to Teensy, Axel Schwenke for the port to STM8.&lt;br /&gt;
&lt;br /&gt;
Thanks to Dániel Körmendi, who added the LG-AIR protocol to [[IRSND_-_english|IRSND]]. Thanks to Ulrich v.d. Kammer for the Pentax protocol extension in [[IRSND_-_english|IRSND]].&lt;br /&gt;
&lt;br /&gt;
At least I will thank Jojo S. for his great job translating this documentation!&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
You can discuss IRMP &amp;amp; IRSND in the german thread [http://www.mikrocontroller.net/topic/162119 Infrared Multi Protocol Decoder].&lt;br /&gt;
&lt;br /&gt;
Have fun with IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99607</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99607"/>
		<updated>2018-08-30T13:46:12Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Das GREE-Protokoll war auch in der 3.1.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Stand vom 29.08.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei ChibiOS HAL definiert man in der Board-Config (board.chcfg) von ChibiOS einen Pin mit dem Namen &#039;&#039;&#039;IR_IN&#039;&#039;&#039; und generiert die Boarddatei neu. Wenn man einen anderen Namen für den Pin verwenden möchte, kann man auch die Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; &lt;br /&gt;
in der irmpconfig.h anpassen. Vor den Namen des Pins aus der Board-Config dann &amp;quot;LINE_&amp;quot; voranstellen, da in IRMP die &lt;br /&gt;
&amp;quot;Line&amp;quot;-Variante der PAL-Schnittstelle verwendet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird die Funktion irmp_ISR() ständig mit der Frequenz F_INTERRUPTS (10-20kHz) aufgerufen. Der Controller&lt;br /&gt;
kann daher kaum in einen energiesparenden Sleep-Modus wechseln, bzw. muss ständig aus diesem wieder aufwachen. Kommt&lt;br /&gt;
es auf den Stromverbrauch an, wie z.B. bei Batteriebetrieb, ist diese Vorgehensweise nicht optimal.&lt;br /&gt;
&lt;br /&gt;
Wenn man &#039;&#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; aktiviert, erkennt IRMP wenn kein IR-Empfang im Gange ist und ruft dann die Funktion &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039; auf. Diese ist controllerspezifisch und muss vom Nutzer bereitgestellt und hinzugelinkt werden. Dort kann dann in den Empfangspausen der Controller schlafen gelegt und so der Energieverbrauch reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Empfohlen wird in der irmp_idle() den Timer-Interrupt zu deaktivieren und statt dessen einen Pinchange-Interrupt zu aktivieren.  Danach kann der Controller schlafen geschickt werden. Wird eine fallende Flanke auf dem IR-Eingang erkannt, wird der Pinchange-Interrupt deaktiviert, der Timer wieder aktiviert und sofort irmp_ISR() aufgerufen. Ein Beispiel für die Verwendung von irmp_idle() findet sich in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
IRMP rein anhand von Pinchange-Interrupts und ohne Timer-Interrupts zu betreiben ist nicht vorgesehen.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
Wenn man IRMP zusammen mit ChibiOS/RT oder ChibiOS/NIL verwendet, kann man deren Event-System verwenden um einen&lt;br /&gt;
Thread aufzuwecken sobald neue IR-Daten empfangen und decodiert wurden.&lt;br /&gt;
&lt;br /&gt;
Dazu setzt man in der irmpconfig.h die Konstante &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; auf 1. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definiert den&lt;br /&gt;
Bitwert in der Event-Bitmaske, der den IRMP-Event symbolisieren soll. Mit &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; wird der&lt;br /&gt;
Variablenname des Threadpointers festgelegt, an den der Event gesendet wird.&lt;br /&gt;
&lt;br /&gt;
In der irmpconfig.h sieht das in der Praxis so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In seinem ChibiOS-Projekt verwendet man das dann so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // Daten aus irmp_data verwenden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.1.1:&lt;br /&gt;
&lt;br /&gt;
* 30.08.2018: Neue Option: IRMP_USE_IDLE_CALL&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 29.08.2018: Portierung auf ChibiOS&lt;br /&gt;
* 29.08.2018: Neues Protokoll: GREE&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99606</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99606"/>
		<updated>2018-08-30T13:43:44Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Version 3.1.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Stand vom 29.08.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei ChibiOS HAL definiert man in der Board-Config (board.chcfg) von ChibiOS einen Pin mit dem Namen &#039;&#039;&#039;IR_IN&#039;&#039;&#039; und generiert die Boarddatei neu. Wenn man einen anderen Namen für den Pin verwenden möchte, kann man auch die Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; &lt;br /&gt;
in der irmpconfig.h anpassen. Vor den Namen des Pins aus der Board-Config dann &amp;quot;LINE_&amp;quot; voranstellen, da in IRMP die &lt;br /&gt;
&amp;quot;Line&amp;quot;-Variante der PAL-Schnittstelle verwendet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird die Funktion irmp_ISR() ständig mit der Frequenz F_INTERRUPTS (10-20kHz) aufgerufen. Der Controller&lt;br /&gt;
kann daher kaum in einen energiesparenden Sleep-Modus wechseln, bzw. muss ständig aus diesem wieder aufwachen. Kommt&lt;br /&gt;
es auf den Stromverbrauch an, wie z.B. bei Batteriebetrieb, ist diese Vorgehensweise nicht optimal.&lt;br /&gt;
&lt;br /&gt;
Wenn man &#039;&#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; aktiviert, erkennt IRMP wenn kein IR-Empfang im Gange ist und ruft dann die Funktion &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039; auf. Diese ist controllerspezifisch und muss vom Nutzer bereitgestellt und hinzugelinkt werden. Dort kann dann in den Empfangspausen der Controller schlafen gelegt und so der Energieverbrauch reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Empfohlen wird in der irmp_idle() den Timer-Interrupt zu deaktivieren und statt dessen einen Pinchange-Interrupt zu aktivieren.  Danach kann der Controller schlafen geschickt werden. Wird eine fallende Flanke auf dem IR-Eingang erkannt, wird der Pinchange-Interrupt deaktiviert, der Timer wieder aktiviert und sofort irmp_ISR() aufgerufen. Ein Beispiel für die Verwendung von irmp_idle() findet sich in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
IRMP rein anhand von Pinchange-Interrupts und ohne Timer-Interrupts zu betreiben ist nicht vorgesehen.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
Wenn man IRMP zusammen mit ChibiOS/RT oder ChibiOS/NIL verwendet, kann man deren Event-System verwenden um einen&lt;br /&gt;
Thread aufzuwecken sobald neue IR-Daten empfangen und decodiert wurden.&lt;br /&gt;
&lt;br /&gt;
Dazu setzt man in der irmpconfig.h die Konstante &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; auf 1. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definiert den&lt;br /&gt;
Bitwert in der Event-Bitmaske, der den IRMP-Event symbolisieren soll. Mit &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; wird der&lt;br /&gt;
Variablenname des Threadpointers festgelegt, an den der Event gesendet wird.&lt;br /&gt;
&lt;br /&gt;
In der irmpconfig.h sieht das in der Praxis so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In seinem ChibiOS-Projekt verwendet man das dann so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // Daten aus irmp_data verwenden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.1.1:&lt;br /&gt;
&lt;br /&gt;
* 30.08.2018: Neue Option: IRMP_USE_IDLE_CALL&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 29.08.2018: Portierung auf ChibiOS&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99605</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99605"/>
		<updated>2018-08-30T13:41:33Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Erklärung von IRMP_USE_IDLE_CALL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0, Stand vom 29.08.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei ChibiOS HAL definiert man in der Board-Config (board.chcfg) von ChibiOS einen Pin mit dem Namen &#039;&#039;&#039;IR_IN&#039;&#039;&#039; und generiert die Boarddatei neu. Wenn man einen anderen Namen für den Pin verwenden möchte, kann man auch die Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; &lt;br /&gt;
in der irmpconfig.h anpassen. Vor den Namen des Pins aus der Board-Config dann &amp;quot;LINE_&amp;quot; voranstellen, da in IRMP die &lt;br /&gt;
&amp;quot;Line&amp;quot;-Variante der PAL-Schnittstelle verwendet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_IDLE_CALL ====&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird die Funktion irmp_ISR() ständig mit der Frequenz F_INTERRUPTS (10-20kHz) aufgerufen. Der Controller&lt;br /&gt;
kann daher kaum in einen energiesparenden Sleep-Modus wechseln, bzw. muss ständig aus diesem wieder aufwachen. Kommt&lt;br /&gt;
es auf den Stromverbrauch an, wie z.B. bei Batteriebetrieb, ist diese Vorgehensweise nicht optimal.&lt;br /&gt;
&lt;br /&gt;
Wenn man &#039;&#039;&#039;IRMP_USE_IDLE_CALL&#039;&#039;&#039; aktiviert, erkennt IRMP wenn kein IR-Empfang im Gange ist und ruft dann die Funktion &lt;br /&gt;
&#039;&#039;&#039;irmp_idle()&#039;&#039;&#039; auf. Diese ist controllerspezifisch und muss vom Nutzer bereitgestellt und hinzugelinkt werden. Dort kann dann in den Empfangspausen der Controller schlafen gelegt und so der Energieverbrauch reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Empfohlen wird in der irmp_idle() den Timer-Interrupt zu deaktivieren und statt dessen einen Pinchange-Interrupt zu aktivieren.  Danach kann der Controller schlafen geschickt werden. Wird eine fallende Flanke auf dem IR-Eingang erkannt, wird der Pinchange-Interrupt deaktiviert, der Timer wieder aktiviert und sofort irmp_ISR() aufgerufen. Ein Beispiel für die Verwendung von irmp_idle() findet sich in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c].&lt;br /&gt;
&lt;br /&gt;
IRMP rein anhand von Pinchange-Interrupts und ohne Timer-Interrupts zu betreiben ist nicht vorgesehen.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
Wenn man IRMP zusammen mit ChibiOS/RT oder ChibiOS/NIL verwendet, kann man deren Event-System verwenden um einen&lt;br /&gt;
Thread aufzuwecken sobald neue IR-Daten empfangen und decodiert wurden.&lt;br /&gt;
&lt;br /&gt;
Dazu setzt man in der irmpconfig.h die Konstante &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; auf 1. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definiert den&lt;br /&gt;
Bitwert in der Event-Bitmaske, der den IRMP-Event symbolisieren soll. Mit &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; wird der&lt;br /&gt;
Variablenname des Threadpointers festgelegt, an den der Event gesendet wird.&lt;br /&gt;
&lt;br /&gt;
In der irmpconfig.h sieht das in der Praxis so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In seinem ChibiOS-Projekt verwendet man das dann so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // Daten aus irmp_data verwenden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.1.0:&lt;br /&gt;
&lt;br /&gt;
* 29.08.2018: Portierung auf ChibiOS&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99589</id>
		<title>IRMP - english</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99589"/>
		<updated>2018-08-29T14:57:12Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: ChibiOS-Port added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the English translation of the [[IRMP#top|german IRMP documentation]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
Project Intention:&lt;br /&gt;
&lt;br /&gt;
Because RC5 isn&#039;t only outdated, today its already obsolete and because more and more electronic devices in consumer electronics around us are used, it is time to develop an IR-decoder that can &#039;understand&#039; about 90 % of IR-remotes that are used in our daily life.&lt;br /&gt;
&lt;br /&gt;
This article indroduces &#039;IRMP&#039; as &amp;quot;Infrared-Multiprotocol-Decoder&amp;quot; in all details. The counterpart, [[IRSND_-_english|IRSND]] as IR-Encoder can be found in this [[IRSND_-_english|document]].&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrared Multiprotocol Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Connection of a IR receiver module to MCU]]&lt;br /&gt;
&lt;br /&gt;
=== Supported MCUs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] has been implemented on several MCU families:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- and XC8/C18 compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (tested on STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (tested on STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several ARM-Cortex-µCs, for Example STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Officially supported µC-Series]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports More µC-Series, community supported]&lt;br /&gt;
&lt;br /&gt;
=== Supported IR Protocols ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] - the infrared remote decoder, which can decode several protocols at once, is capable of decoding the following protocols (in alphabetic order):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;supported protocols&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protocol || Vendor&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FAN|FAN]] || FAN, remote for fans&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, e.g. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]] || various european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon and other japanese vendors which are members of the  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner &#039;&#039;&#039;(NEW!)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MERLIN|MERLIN]]  || MERLIN remote (Pollin article number: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName and many more asian vendors.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NUBERT|NUBERT]] || Nubert, e.g. Subwoofer Systems&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PANASONIC|PANASONIC]] || PANASONIC Beamer (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PENTAX|PENTAX]] || PENTAX (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6A]] || Philips, Kathrein and others, e.g. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCCAR|RCCAR]] || RC Car: IR remote for RC toys &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCMM|RCMM]] || Fujitsu-Siemens e.g. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ROOMBA|ROOMBA]] || iRobot Roomba vacuum cleaner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#S100|S100]] || similar to RC5, but 14 instead of 13 Bits and 56kHz modulation. vendor unknown.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG48|SAMSUNG48]] || various air conditions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (e.g. T-Home-Mediareceiver, MERLIN-keyboard(Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SPEAKER|SPEAKER]] || Speaker Systems like X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#VINCENT|VINCENT]] || Vincent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of these protocols can be activated separately. If you want, you can activate all protocols. If you need only one protocol, you can disable all others. It will only be compiled the code that has been selected by the user.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] source for the AVR and PIC MCUs has been created as part of the [[Word Clock]] project.&lt;br /&gt;
&lt;br /&gt;
=== Thread in Forum ===&lt;br /&gt;
&lt;br /&gt;
Intention for an own IRMP article is the following thread in Projects&amp;amp;Code [http://www.mikrocontroller.net/topic/162119 IRMP - Infrared Multi Protocol Decoder] (in german language).&lt;br /&gt;
&lt;br /&gt;
== IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC protocol, RGB remote control, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Some vendors use their own proprietary protocol, such as Sony, Samsung and Matsuhita. Philips has developed [[IRMP_-_english#RC5 + RC5X|RC5]] and of course used for own purposes.&lt;br /&gt;
[[IRMP_-_english#RC5 + RC5X|RC5]] was seen in Europe as &#039;&#039;that&#039;&#039; standard IR-protocol which was adopted by many european vendors. Nowadays is [[IRMP_-_english#RC5 + RC5X|RC5]] nearly nowhere used - it can be ticked as &amp;quot;dead&amp;quot;. Although the successor [[IRMP_-_english#RC6_+_RC6A|RC6]] is used in actual european hardware, it is also used rarely.&lt;br /&gt;
&lt;br /&gt;
Also japanese vendors tried to establish an own standard, the so called [[IRMP_-_english#KASEIKYO|Kaseikyo]]- (or also &amp;quot;Japan-&amp;quot;) protocol. This is with a bitlength of 48 bits more versatile. But it has no general acceptance until today - even if you find it in some appliances.&lt;br /&gt;
&lt;br /&gt;
Nowadays the [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol is used (also mainly in japanese devices) - indeed in various premium and NoName products. I estimate the market share to 80 % for the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-protocol. Nearly all remotes in my daily use utilize the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-IR-Code. This starts at the TV-set, goes over the DVD-player to the Notebook remote and reaches up to NoName-Multimedaia-Harddrive, just to mention a few samples.&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports the following IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance|Pulse Distance]], typ. Example: [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Width|Pulse Width]], typ. Example: [[IRMP_-_english#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP_-_english#Biphase|Biphase (Manchester)]], typ. Example: Philips [[IRMP_-_english#RC5_+_RC5X|RC5]], [[IRMP_-_english#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Position|Pulse Position (NRZ)]], typ. Example: [[IRMP_-_english#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance Width|Pulse Distance Width]], typ. Example: [[IRMP_-_english#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
The pulses are modulated - usually with 36 kHz or 38 kHz - to reduce environment influences such as Indoorlightning or sunlight.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Distance Coding can be discovered by the following rule:&lt;br /&gt;
&lt;br /&gt;
* there is only &#039;&#039;&#039;one pulse length&#039;&#039;&#039; and there are &#039;&#039;&#039;two different pause lengths&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Width Coding can be discovered by the following rule: &lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;only one pause length&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
This is a mix from Pulse Distance and Pulse Width Coding, so:&lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;two different pause lengths.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
In Biphase Coding the order of pulse and pause gives the bit value.&lt;br /&gt;
Therefore a Biphase-Coding can be discovered by this criteria:&lt;br /&gt;
&lt;br /&gt;
* there is exactly &#039;&#039;&#039;one&#039;&#039;&#039; pause- and one pulse length, as well as the &#039;&#039;&#039;double&#039;&#039;&#039; pulse/pause length&lt;br /&gt;
&lt;br /&gt;
Usually the length for the pulse and pause are equal, that means the signal shape is symmetric. But IRMP knows also protocols which use different puls/pause lengths. This case is for example the [[IRMP_-_english#A1TVBOX|A1TVBOX]]-protocol.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
The pulse position coding is known from usual UART&#039;s. Every bit has a fixed length here. Depending on the value (0 or 1), it is a pulse or a pause.&lt;br /&gt;
&lt;br /&gt;
Typical criteria for a &#039;&#039;&#039;pulse position protocol&#039;&#039;&#039; is:&lt;br /&gt;
* there are &#039;&#039;&#039;multiples&#039;&#039;&#039; of a basic pulse/pause length&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A tabular listing of different IR-protocols can be found here: [[IRMP_-_english#IR_Protocols_in_Detail|IR Protocols in Detail]].&#039;&#039;&#039;&lt;br /&gt;
The specified timings are typical values. In some remotes they differ up to 40 % in real life. Therefore [[IRMP_-_english#top|IRMP]] uses minimum/maximum limits to be tolerant with the timing.&lt;br /&gt;
&lt;br /&gt;
== Protocol Detection ==&lt;br /&gt;
&lt;br /&gt;
The most of the [[IRMP_-_english#top|IRMP]] decoded protocols have something in common: they show a start bit which is unique for their timing.&lt;br /&gt;
&lt;br /&gt;
According to this start bit timing the most protocols are discriminated. [[IRMP_-_english#top|IRMP]] measures the timing of the start bit and reorders its timing tables &amp;quot;on-the-fly&amp;quot; for the discovered protocol. So the following bits can be read sequential without the need of storing a complete frame.&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] does not wait for reading a complete frame to analyze, it starts decoding after the first pulse detection.&lt;br /&gt;
&lt;br /&gt;
If the first read start bit is not unique, [[IRMP_-_english#top|IRMP]] follows multiple possible protocols. If for plausible reasons one protocol is no more possible this track will be dropped.&lt;br /&gt;
&lt;br /&gt;
The detection is implemented as a [[Statemachine|state machine]], which is called interrupt driven with an frequency of typically 15.000 per second. the [[Statemachine|state machine]] knows the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the first pulse length of the start bit&lt;br /&gt;
* detect the pause length of the start bit&lt;br /&gt;
* detect the pulse length of the first data bit&lt;br /&gt;
&lt;br /&gt;
After that, the pulse/pause length of the start bit are known. Now all enabled protocols are searched for this length. If a protocol matches, the timing table for this protocol is loaded and the following bits are checked if the pulse/pause timing still fit to the limis.&lt;br /&gt;
&lt;br /&gt;
So the [[Statemachine|state machine]] continues with the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the pauses of the data bits&lt;br /&gt;
* detect the pulse length of the data bits&lt;br /&gt;
* check timing. If different, switch back to another valid IR protocol, otherwise return&lt;br /&gt;
* detect the sop bit if present in the protocol&lt;br /&gt;
* check data for plausibility, like CRC or other redundant data bits&lt;br /&gt;
* convert data to device address and command&lt;br /&gt;
* detect code repetition by long key press, set according flag&lt;br /&gt;
&lt;br /&gt;
Indeed the [[Statemachine|state machine]] is even more complex because some protocols have no start bit (e.g. [[IRMP_-_english#DENON|Denon]]) or have multiple start bits (4 in [[IRMP_-_english#B.26O|B&amp;amp;O]]) or have within the frame another sync bit (z.B. [[IRMP_-_english#SAMSUNG|Samsung]]). These extra conditions are caught in the code by protocol specific &amp;quot;special cases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Switching to an other protocol can happen multiple times during receiving of a frame, f.e. from [[IRMP_-_english#NEC42|NEC42]] (42 Bit) to [[IRMP_-_english#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), when a premature sync bit was detected. Or from [[IRMP_-_english#NEC + extended NEC|NEC]]/[[IRMP_-_english#NEC42|NEC42]] (32/42 Bit) to [[IRMP_-_english#JVC|JVC]] (16 Bit) when the stop bit premature occured. It is getting difficult when two possible protocols after the detection of the start bit use different codings, e.g. when the one protocol uses a [[IRMP_-_english#Pulse Distance|Pulse Distance Coding]] and the other uses a [[IRMP_-_english#Biphase|Biphase Coding (Manchester)]]. In this case [[IRMP_-_english#top|IRMP]] stores the necessary bits for both codings and releases later the one or the other.&lt;br /&gt;
&lt;br /&gt;
Furthermore some remotes are transmitting in particular protocols for redundance reasons (error detection) or for long key presses repetition frames. These will be discriminated by IRMP: the necessary frames for error detection are checked by IRMP, but not passed to the application. The other will be detected as long key press and flagged by IRMP.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9, Date: 2018-02-19&lt;br /&gt;
&lt;br /&gt;
Download of stable version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] &amp;amp; [[IRSND_-_english|IRSND]] is also available by SVN: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP in SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP on GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The version in the SVN can be a newer version than the stable version stored in Irmp.zip. In doubt, use the download link of Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see the history of the software changes here: [[IRMP_-_english#Software_History|Software History]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The source code can be easily compiled for AVR MCUs by loading the project file irmp.aps in AVR Studio 4.&lt;br /&gt;
&lt;br /&gt;
For other development environments it is simple to create a project or makefile. The source includes:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - IR-decoder core&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - all protocoll definitions&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - target independant definitions for AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include file for the application&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - user configuration&lt;br /&gt;
&lt;br /&gt;
Sample applications (main functions and timer configurations):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR with output on UART&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;Important: include only irmp.h to your application:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other include files are included within irmp.h. See also the sample application irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the preprocessor constant &#039;&#039;&#039;F_CPU in project or makefile&#039;&#039;&#039; must be defined. This should have at least the value of 8000000UL, processor speed should be at least 8 MHz. This applies to AVR targets and not for MCUs with PLL. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] is also running on PIC processors. For the PIC-CCS compiler are already the necessary preprocessor defines set, so that [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be directly used in the CCS environment. Only a short interrupt service routine like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
must be added. The Interrupt period time must be set to 66 µs (15 kHz).&lt;br /&gt;
&lt;br /&gt;
For AVR processors you will find an example for the usage of [[IRMP_-_english#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. The main things are the [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]] initializing of the timer and the processing of received IR commands. The received protocoll, the device address and the command will be output on the HW-UART.&lt;br /&gt;
&lt;br /&gt;
For the Stellaris LM4F120 Launchpad from TI (ARM Cortex M4) is a propriate timer init function already integrated in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used also with STM32 microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Another new implementation is available on the mbed platform.&lt;br /&gt;
=== avr-gcc Optimizations ===&lt;br /&gt;
&lt;br /&gt;
From version avr-gcc 4.7.x the option [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] can be used to make the call of the external function irmp_ISR() from the main ISR more efficent. This improves the performance of the ISR a little.&lt;br /&gt;
&lt;br /&gt;
Add the following compiler- and linker options:&lt;br /&gt;
&lt;br /&gt;
* additional compiler option: -flto&lt;br /&gt;
* additional linker options: -flto -Os&lt;br /&gt;
&lt;br /&gt;
If you forget the additional linker option -Os, the binary will be significant larger as it will no be optimized further. Also the option -flto must be passed to the linker, otherwise the link time optimization will not work.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration of [[IRMP_-_english#top|IRMP]] is done by settings in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] :&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#F_INTERRUPTS|number of interrupts per second]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_SUPPORT_xxx_PROTOCOL|supported IR protocols]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|hardware pin for IR receiver]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_LOGGING|IR logging]]&lt;br /&gt;
&lt;br /&gt;
=== Adjustments in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] will decode all protocols listed above in one ISR. For this, there are some settings necessary. These are set in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h].&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Number of interrupts per second. Should be set to a value from 10000 to 20000. The higher the value, the better the resolution and therefore the quality of detection. But a higher interrupt rate means also higher CPU load. The value of 15000 is in most cases a good compromise.&lt;br /&gt;
&lt;br /&gt;
Standardvalues:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On AVR controllers is a timer1 with 16 bit resolution used in the example [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. If for any reasons timer1 is not available, you can also use timer2 with 8 bit resolution.&lt;br /&gt;
&lt;br /&gt;
In this case timer2 will be configured as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example is valid for ATmega88/ATmega168/ATmega328. For other AVR MCUs check the datasheet.&lt;br /&gt;
&lt;br /&gt;
You must not forget to adjust the ISR for timer2 as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Here you can select which protocols should be supported by [[IRMP_-_english#top|IRMP]]. Standardprotocols are activated by default.&lt;br /&gt;
&lt;br /&gt;
Would you like to turn on more protocols or turn off some other for memory saving reasons, then the corresponding values in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] must be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [[IRMP_-_english#top|IRMP]] supported IR protocol consumes the noted amount of code. Here you can apply optimizations: for example the modulation frequency of 455 kHz for the [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol is far away from the frequencies that are used by other protocols. Maybe you need a different IR receiver, otherwise you could disable these protocols. For example you cannot receive a [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol (455kHz) with a TSOP1738 / TSOP 31238.&lt;br /&gt;
&lt;br /&gt;
Furthermore the protocols [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP_-_english#FDC|FDC]]/[[IRMP_-_english#RCCAR|RCCAR]] are only reliable detected at a frequency starting at 15 kHz. For [[IRMP_-_english#LEGO|LEGO]] it is even 20 kHz. When you want to use these protocols, you must adjust [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]]. Otherwise, during compilation you will get a warning and the corresponding protocols are automatically disabled.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
This constant defines the pin where the IR receiver is connected.&lt;br /&gt;
&lt;br /&gt;
Default value is PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two values must match your hardware configuration.&lt;br /&gt;
&lt;br /&gt;
This applies also to STM32 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the corresponding section for STM8 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PIC controllers there is only the define for &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - depending on compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using ChibiOS HAL, define a pin with the name &#039;&#039;&#039;IR_IN&#039;&#039;&#039; in your board config (board.chcfg) of ChibiOS&lt;br /&gt;
and regenerate the board files. When you want to use another name for the pin, change the constant &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039;&lt;br /&gt;
in irmpconfig.h. Use the name of the pin from the board config and prefix it with &amp;quot;LINE_&amp;quot;, as IRMP is using&lt;br /&gt;
the &amp;quot;line&amp;quot;-variant of the PAL-interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you turn on callbacks, on any level change at the input the callback function is called. This could be use to visualize incoming IR signals by driving another output pin.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
When using IRMP with ChibiOS/RT or ChibiOS/NIL, you can use their Event-module to wake a thread as soon as new&lt;br /&gt;
IR data was received and decoded.&lt;br /&gt;
&lt;br /&gt;
Set the &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; constant in irmpconfig.h to 1 to enable this. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definies the&lt;br /&gt;
value in the event bitmask that should symbolize the IRMP event. Use &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; to define&lt;br /&gt;
the variable name of the thread pointer that the event is sent to.&lt;br /&gt;
&lt;br /&gt;
Change irmpconfig.h like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use the event in your ChibiOS-project like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // use data in irmp_data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
With IRMP_LOGGING the logging of received IR frames can be turned on.&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation can be found here: [[IRMP_-_english#Scanning_of_unknown_IR_Protocols|Scanning of unknown IR Protocols]].&lt;br /&gt;
&lt;br /&gt;
=== IRMP in Practice ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] supported protocols use partly variable, partly fixed bit length from 2 up to 48 bits. These will be described by preprocessor defines.&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] separates these IR frames always into 3 sections:&lt;br /&gt;
&lt;br /&gt;
 1. protocol ID&lt;br /&gt;
 2. address or vendorcode&lt;br /&gt;
 3. command&lt;br /&gt;
&lt;br /&gt;
with this function&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
you can recall a decoded message. The return value is 1 when a message has been received, otherwise it is 0. In the first case the struct members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contain valid information.&lt;br /&gt;
&lt;br /&gt;
That means: finally you&#039;ll get simply three values (protocol, address and command) that can be checked with an if or switch statement. &lt;br /&gt;
Here is a sample decoder which checks for key 1-9 on a remote:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are possible constants for irmp_data.protocol, see also [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values of address and the command code of an unknown remote can be received and printed over UART or LCD. Then these values can be used hard coded in your decoder routine. Or you write a teaching routine, where you need to press a key once to store the code in an EEPROM. A sample for this can be found in [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Another [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup example main function] is included in the zip file, showing also the timer initialization.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Debouncing&amp;quot; of Keys ===&lt;br /&gt;
&lt;br /&gt;
To distinguish between long key press or a single press, the bit mask IRMP_FLAG_REPETITION exists. This will be set in struct member &#039;&#039;&#039;flags&#039;&#039;&#039; when a key on the remote is pressed for longer time and therefore the same command is repeated in short periods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // long key press&lt;br /&gt;
      // either:&lt;br /&gt;
      //   ignore the (repeated) key&lt;br /&gt;
      // or:&lt;br /&gt;
      //   use this information for a repeat function&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // key was pressed again&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be used to &amp;quot;debounce&amp;quot; the keys 0-9 by ignoring commands with bit IRMP_FLAG_REPETITION set. For keys like &#039; VOLUME+&#039; or &#039;VOLUME-&#039; using the repetition could be useful, maybe to [[LED-Fading|fade a LED]].&lt;br /&gt;
&lt;br /&gt;
If you want to decode only singe keys, you can reduce the block above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Its a new key&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mode of Operation ==&lt;br /&gt;
&lt;br /&gt;
The  &amp;quot;Working Horse&amp;quot; of [[IRMP_-_english#top|IRMP]] is the interrupt service routine irmp_ISR() which should be called 15000 times per second. Is this rate different, the constant [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] needs to be adjusted.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detects first the length and the form of the startbit(s) and determines the used protocols by this information. As soon as the protocol was identified, the further bits are parameterized to read the following bits most efficient until the IR command is complete.&lt;br /&gt;
&lt;br /&gt;
Just to stop slashers:&lt;br /&gt;
&lt;br /&gt;
I know that the ISR is quite large. But as it acts as a state machine, the effective executed code per cycle is relative small. While it is &amp;quot;dark&amp;quot; (and that is the case for the most time ;-)) the spent time is vanishing short. In the WordClock project for example are called 8 ISR&#039;s with the same timer, there is irmp_ISR() only one amongst many others. For at least 8 MHz CPU clock no timing problems occured. Therefor I see really no problem in the length of the ISR.&lt;br /&gt;
&lt;br /&gt;
A crystal is not a neccessary must, it works well with the internal AVR oscillator. Remember to set the correct fuses for the CPU to run at 8 MHz, check [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] for correct values for an ATMEGA88.&lt;br /&gt;
&lt;br /&gt;
== Scanning of unknown IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
Changing in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the value for [[IRMP_-_english#IRMP_LOGGING|IRMP_LOGGING]] to 1, then a logging in [[IRMP_-_english#top|IRMP]] will be turned on: the bright- and darkphases will be sent via UART with 9600 bit/s: 1=dark, 0=bright. Maybe the constans in the functions uart_init() and uart_putc() must be adjusted, this depends on the used AVR MCU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark: for PIC-processors there is an own logging module named [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. This makes it possible to log via USB. This applies not to the AVR version&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you record these protocol scans with a terminal program and save them as a textfile, you can use these files for analyzing the frames in ordner to add a yet unknown protocol to [[IRMP_-_english#top|IRMP]] - see next chapter.&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that is not supported by [[IRMP_-_english#top|IRMP]] you can send me ([http://www.mikrocontroller.net/user/show/ukw ukw]) the scan files. Then I can check if the protocol fits into the IRMP concepts and adapt the sources if applicable.&lt;br /&gt;
&lt;br /&gt;
== IRMP under Linux and Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be compiled under Linux for testing IR scans in textfiles. In the subdirectory &#039;IR-Data&#039; you will find such files that you can use as input files for [[IRMP_-_english#top|IRMP]].&lt;br /&gt;
&lt;br /&gt;
The compilation of [[IRMP_-_english#top|IRMP]] is started by:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
This will generate 3 IRMP versions:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version for 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version for 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version for 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Starting IRMP ===&lt;br /&gt;
&lt;br /&gt;
The calling syntax is:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
The given options are exclusive, that means only one option per call is valid:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             print a list with pulses and pauses&lt;br /&gt;
   -a analyze           analyse the puls/pauses and write a &amp;quot;spectrum&amp;quot; in ASCII format&lt;br /&gt;
   -v verbose           verbose output&lt;br /&gt;
   -p  Print Timings    print a timing table for all protocols&lt;br /&gt;
&lt;br /&gt;
Samples:&lt;br /&gt;
&lt;br /&gt;
=== Normal Output ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output Lists ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analysing ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you see the measured times of all pulses and pauses as (horizontal) bell shaped curves, which of course are not quite ideal displayed due to the ASCII formatting. The smaller the measured channels, the better is the timing of the remote.&lt;br /&gt;
&lt;br /&gt;
The above output can be read as:&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pulse length between 9000 and 9200 µs, in average 9102 µs. The deviation from this average is about 1.1 %&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pause length between 4300 and 4500 µs, the average is 4424 µs. The error is about 2.8 %.&lt;br /&gt;
&lt;br /&gt;
* the pulse length of a databit is between 500 and 700 µs, in average 650 µs, the error is (quite large!) 23.1 %&lt;br /&gt;
&lt;br /&gt;
Further there are two more pauses with different length (for bits 0 and 1). Checking this I leave to the willing reader ;-)&lt;br /&gt;
&lt;br /&gt;
=== Verbose Output ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting under Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used as well under Windows, like:&lt;br /&gt;
&lt;br /&gt;
* start command line console&lt;br /&gt;
* change to directory &#039;irmp&#039;&lt;br /&gt;
* enter:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
The same options apply as for the Linux version.&lt;br /&gt;
&lt;br /&gt;
=== Long Outputs ===&lt;br /&gt;
&lt;br /&gt;
As some outputs are pretty large, it is recommended to redirect the output to a file or filter for paging:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Remote Controls ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protocol || Name || Device || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports more and more also camera remotes like:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
The command variety isn&#039;t really large. Usually the cameras understand only the command:&lt;br /&gt;
&amp;quot;Trigger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is a short table for [[IRMP_-_english#PENTAX|PENTAX]] cameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Command || Function&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Trigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || change Zoomlevel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because there is no address designated in the [[IRMP_-_english#PENTAX|PENTAX]]-protocol, this should be set for sending in [[IRSND_-_english|IRSND]] to 0x0000. You should also use a crystal in this case because especially the Nikons are very fussy regarding the timing.&lt;br /&gt;
&lt;br /&gt;
== IR Keyboards ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]]  supports from version 1.7.0 also IR keyboards, namely the FDC-3402 &amp;lt;s&amp;gt; from www.pollin.de (partno. 711 056) for less than 2 Euro.&amp;lt;/s&amp;gt; (not available as of 19.09.2017 )&lt;br /&gt;
&lt;br /&gt;
On detection of a key press the following data is returned:&lt;br /&gt;
&lt;br /&gt;
 Protocol-Number  (irmp_data.protocol): 18&lt;br /&gt;
 Address          (irmp_data.address) : 0x003F&lt;br /&gt;
&lt;br /&gt;
As command (irmp_data.command) the following values are returned:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special keys left side:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above values are for pressing a key. On release,  [[IRMP_-_english#top|IRMP]] sets also Bit 8 (0x80) in the command.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F&lt;br /&gt;
&lt;br /&gt;
Exception for the ON / OFF key: This one sends only for key press a code, not for release.&lt;br /&gt;
&lt;br /&gt;
Is a key pressed for a longer time, it will be notified in irmp_data.flag&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x00&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When key combinations (like a capital &#039;A&#039;) are pressed, then the return values are a sequence like this:&lt;br /&gt;
&lt;br /&gt;
      Left SHIFT-key pressed:    0x0002&lt;br /&gt;
      Key &#039;a&#039; pressed:           0x001F&lt;br /&gt;
      Key &#039;a&#039; released:          0x009F&lt;br /&gt;
      Left SHIFT-key released:   0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] you will find a function get_fdc_key() for the Linux version, which can be used as a template to convert the FDC keycodes into the corresponding ASCII codes. This function can be used either local on the MCU to decode the keycodes, or on the hostsystem (e.g. PC) where the IRMP data structure is sent to. Therefore the function incl. preprocessor constands should be copied to your application code.&lt;br /&gt;
&lt;br /&gt;
Here is an excerpt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
 &lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And at least an example for the usage of function get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All non-printable characters are coded as:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Key               || Constant                || Value&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menu              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Back              || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Forward           || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adress            || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Window            || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Page           || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| New Page          || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Font              || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Print             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| On/Off            || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Insert            || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Delete            || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| End               || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor right      || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor down       || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Page up           || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Page down         || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Left Mousebutton  || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Right Mousebutton || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The function get_fdc_key() considers the holding of key pressed of Shift-, Ctrl- and ALT. For this reason not only the writing of capital letters works, but also the selection of special characters with the key combination ALT + key, e.g. ALT + m -&amp;gt; µ or ALT + q -&amp;gt; @. Also you can send CTRL-A to CTRL-Z by using the Ctrl key. The Caps Lock key is ignored, as I regard this key as the most unnecessary key at all ;-)&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== IR Protocols in Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC Protocol|NEC + extended NEC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data NEC || 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data ext. NEC || 16 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 9000µs pulse, 2250µs pause, 560µs pulse, ~100ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC16 Protocol (JVC)|JVC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 12 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause, 6000µs pause if keyboard repetition&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 8 address bits + 1 sync bit + 8 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 560µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 42 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 address bits + 13 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 110ms (beginning from start bit), 9000µs pulse, 2250µs pause, 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#ACP24 Protocol|ACP24]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 70 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 70 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 390µs pulse, 950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 390µs pulse,  950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 390µs pulse, 13000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 390µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LGAIR Protocol|LGAIR]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 28 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 16 command bits + 4 checksum bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first (&#039;&#039;&#039;differing&#039;&#039;&#039; to [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SAMSUNG Protocol|SAMSUNG]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data(1) bits + 1 sync bit + 20 data(2)-bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data(1) || 16 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data(2) || 4 ID bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || repetition after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || Repetition after approx. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 32 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 8 Bits + 8 inverted Bits + 8 Bits + 8 inverted Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || one after approx. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 45 msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#MATSUHITA Protocol|MATSUSHITA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 customer bits + 6 command bits + 12 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 22 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 11 command bits + 11 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#KASEIKYO_Protocol_.28.22Japan Protocol.22.29|KASEIKYO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 customer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 ID bits + 8 parity bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3380µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 423µs pulse,  423µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 423µs pulse, 1269µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 423µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 80ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start Bits + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 3 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80EXT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 4 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 3637µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Denon Protocol|DENON]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (in practice, theoretically: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 5 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 6 data bits + 2 extension bits + 2 data construction bits (normal: 00, inverted: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || no Start Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse, 775µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 310µs pulse, 1780µs pause (in practice, theoretically: 275µs pulse, 1900µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 310µs pulse (310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse)&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || after 65ms with inverted command bits (data construction bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || both frames after 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 11100000 + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1060µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  437µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 start bits + 16 data bits + 1 trailer bit + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 1 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 2 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 3 || 200µs pulse, 15425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 4 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 200µs pulse, 9175µs pause&lt;br /&gt;
|-&lt;br /&gt;
| R Bit || 200µs pulse, 6050µs pause, repeats the last bit&lt;br /&gt;
|-&lt;br /&gt;
| Trailer Bit || 200µs pulse, 12300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 200µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 40 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 12 x 0 Bits + 4 press/release bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2085µs pulse, 966µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 300µs pulse,  220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 300µs pulse, 715µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 300µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Press Key || press/release bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Release Key || press/release bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of approx. 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 2 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 2 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse,  1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 3500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 56 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 24 bits (010000000000010000000001) + 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3600µs pulse, 1600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 565µs pulse,  316µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 565µs pulse, 1140µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 565µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 6 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 1000µs pulse,  1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1000µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 1000µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 210µs pulse, 6218µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pulse,  1400µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 12 command bits + 4 crc bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 1026µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse,  263µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 553µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#VINCENT|VINCENT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 8 command bits + 8 repeated command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2500µs pulse, 4600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1540µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 13 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse,  900µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 450µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RCMM_Protocol|RCMM]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 start bit + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM32 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM24 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM12 || 4 address bits (= 2 mode bits + 2 device bits) + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 500µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 00 Bits || 230µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 01 Bits || 230µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 10 Bits || 230µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 11 Bits || 230µs pulse, 720µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 230µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SIRCS_Protocol|SIRCS]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequency ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 12-20 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 7 command bits + 5 address bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1200µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || twice after approx. 25ms, that means: 2nd und 3rd Frame&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || starting with 4th identical frame, distance approx. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse distance Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse, 1300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th etc. indentical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
This protocol is very similar to [[IRMP_-_english#NUBERT|NUBERT]], but here it will be sent only one frame. Additionally there are 11 instead of 10 data bits and no stop bit. The pause time between frame repetitions is substantial lower.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 11 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 380µs pulse, 1280µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 6,6ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1250µs pulse, 440µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 440µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after approx. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th ... identical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 7 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 930µs pulse, 2790µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 3 times after 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC5 and RC5x Protocol|RC5 + RC5X]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start Bits + 12 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5 || 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 start bit + 13 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5X || 1 inverteds command bit + 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 data bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 14 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 inverteds command bit + 1 toggle bit + 5 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC6 and RC6A Protocol|RC6 + RC6A]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (000) + 1 toggle bit + 16 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (110) + 1 toggle bit + 31 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6 || 8 address bits + 8 Command Bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A || &amp;quot;1&amp;quot; + 14 customer bits + 8 system bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 mode bits (&amp;quot;110&amp;quot;) + 1 toggle bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 toggle(!) + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2666µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 444µs pause, 444µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 444µs pulse, 444µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Grundig Protocol|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms pause + N Info-Frames + 117,76ms pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 pre bit + 1 start bit + 9 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Grundig || 9 command bits + 0 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Nokia || 8 command bits + 8 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#IR60_.28SDA2008_and_MC14497P.29|IR60]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 start bit + 101111 + 0 stop bits + 22ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Data Frame || 1 start bit + 7 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz? (Merlin-Tastatur mit Ruwido protocol: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 start bit + 22 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 start bit + 17 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Siemens || 11 address bits + 10 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Data Ruwido || 9 address bits + 7 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 275µs pause, 275µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once with repeat bit set (?)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 16 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 250µs pulse, 150µs + 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 250µs pulse, 150µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetric&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 210µs pulse, 210µs + 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 210µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 address bits + 2 special bits +  6 command bits + 4 special bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pause, 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 2 additinal frames with special bits set&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || only repetition of the 2nd frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protocols ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 3 address bits + 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 800µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Length || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes of IRMP in 3.0.x ===&lt;br /&gt;
&lt;br /&gt;
Version 3.0.?:&lt;br /&gt;
&lt;br /&gt;
* 2018-08-29: Port to ChibiOS&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 2018-02-19: corrected handling of irmp_flags for invalid frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 2017-08-25: New protocol: IRMP16 for transparent 16 bit data communication&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 2016-11-18: Corrected buffer overflow in irmp-main-avr-uart.c&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-19: New protocol [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-09: New protocol [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (air conditioner)]]&lt;br /&gt;
* 2016-09-09: Some modifications for Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 2016-01-16: Some corrections of port to ESP8266&lt;br /&gt;
* 2016-01-16: Added port to MBED&lt;br /&gt;
* 2016-01-16: Added several hardware dependent example main source files&lt;br /&gt;
&lt;br /&gt;
=== Older Versions ===&lt;br /&gt;
&lt;br /&gt;
* 2015-11-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 2015-11-17: Port to ESP8266&lt;br /&gt;
* 2015-11-17: Port to Teensy (3.x)&lt;br /&gt;
* 2015-11-10: Added support for STM8 microcontroller&lt;br /&gt;
* 2015-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
* 2015-06-15: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ACP24|ACP24]]&lt;br /&gt;
* 2015-05-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#S100|S100]]&lt;br /&gt;
* 2015-05-29: Some smaller corrections&lt;br /&gt;
* 2015-05-28: Added Logging for XMega&lt;br /&gt;
* 2015-05-28: Timing corrections  for FAN protocol&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#MERLIN|MERLIN]]&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FAN|FAN]]&lt;br /&gt;
* 2015-05-18: Added F_CPU macro for STM32L1XX&lt;br /&gt;
* 2015-05-18: Some corrections for XMega port&lt;br /&gt;
* 2015-04-23: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* 2015-04-23: Port to AVR XMega&lt;br /&gt;
* 2014-09-19: Bugfix: added missing newline before #else&lt;br /&gt;
* 2014-09-18: Added logging for ARM STM32F10X&lt;br /&gt;
* 2014-09-17: Corrected PROGMEM access to array irmp_protocol_names[].&lt;br /&gt;
* 2014-09-15: Changed timing tolerances for [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol&lt;br /&gt;
* 2014-09-15: Moved  irmp_protocol_names to flash, additional UART routines in irmp-main-avr-uart.c&lt;br /&gt;
* 2014-07-21: Port to PIC 12F1840&lt;br /&gt;
* 2014-07-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 2014-07-09: Some small corrections&lt;br /&gt;
* 2014-07-01: Added logging for ARM_STM32F4XX&lt;br /&gt;
* 2014-07-01: IRMP port for PIC XC8 compiler, removed variadic macros because of stupid XC8 compiler :-(&lt;br /&gt;
* 2014-06-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LGAIR|LGAIR]]&lt;br /&gt;
* 2014-05-30: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SPEAKER|SPEAKER]]&lt;br /&gt;
* 2014-05-30: Optimized timings for [[IRMP_-_english#SAMSUNG|SAMSUNG]] protocol&lt;br /&gt;
* 2014-02-20: Corrected decoding of [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2014-02-19: &#039;&#039;&#039;New protocols&#039;&#039;&#039;: [[IRMP_-_english#RCMM|RCMM32, RCMM24 and RCMM12]]&lt;br /&gt;
* 2014-09-17: Optimized timing for [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: Optimized detection of [[IRMP_-_english#ORTEK|ORTEK (Hama)]] frames&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 2013-03-12: Changed timing tolerancies for [[IRMP_-_english#RECS80|RECS80]]- and  [[IRMP_-_english#RECS80EXT|RECS80EXT]] protocol&lt;br /&gt;
* 2013-01-21: Corrected detection of repetition frame beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2013-01-17: Corrected frame detection beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-12-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 2012-12-07: Improved detection von [[IRMP_-_english#DENON|DENON]] repetition frame&lt;br /&gt;
* 2012-11-19: Port to Stellaris LM4F120 TI Launchpad (ARM Cortex M4)&lt;br /&gt;
* 2012-11-06: Corrected [[IRMP_-_english#DENON|DENON]] frame detection&lt;br /&gt;
* 2012-10-26: Some timer corrections and adaptations for Arduino&lt;br /&gt;
* 2012-07-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#BOSE|BOSE]]&lt;br /&gt;
* 2012-06-18: Added support for ATtiny87/167&lt;br /&gt;
* 2012-06-05: Some smaller corrections of port to ARM STM32&lt;br /&gt;
* 2012-06-05: Correction of include in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 2012-06-05: Bugfix, if only [[IRMP_-_english#NEC_+_extended_NEC|NEC]] and [[IRMP_-_english#NEC42|NEC42]] activated&lt;br /&gt;
* 2012-05-23: Port to ARM STM32&lt;br /&gt;
* 2012-05-23: Bugfix frame detection for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-02-27: Bugfix in IR60-Decoder&lt;br /&gt;
* 2012-02-27: Bugfix in CRC calculation of  [[IRMP_-_english#KASEIKYO|KASEIKYO]] frames&lt;br /&gt;
* 2012-02-27: Port to C18 Compiler for PIC microcontrollers&lt;br /&gt;
* 2012-02-13: Bugfix: most significant bit in Address wrong in [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol, if [[IRMP_-_english#NEC42|NEC42]] protocol activated, too&lt;br /&gt;
* 2012-02-13: Corrected timing of [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol&lt;br /&gt;
* 2012-02-13: [[IRMP_-_english#KASEIKYO|KASEIKYO]]: Genre2 bits will be now stored in upper nibble of flags&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#KATHREIN|KATHREIN]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#THOMSON|THOMSON]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LEGO|LEGO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC16|NEC16]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC42|NEC42]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NETBOX|NETBOX]]&lt;br /&gt;
* 2011-09-20: Port to ATtiny84 and ATtiny85&lt;br /&gt;
* 2011-09-20: Improved key repetition detection in [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
* 2011-09-20: Improved decoding of [[IRMP_-_english#Biphase|Biphase]] protocols&lt;br /&gt;
* 2011-09-20: Fixed some smaller bugs in [[IRMP_-_english#RECS80|RECS80]] decoder&lt;br /&gt;
* 2011-09-20: Corrected detection of additional bits in SIRCS protocol&lt;br /&gt;
* 2011-01-18: Some corrections for [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2011-01-18: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
* 2011-01-18: [[IRMP_-_english#SIRCS|SIRCS]]: additional bits (&amp;gt;12) will be stored in address&lt;br /&gt;
* 2011-01-18: Some timing corrections for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-09-04: Bugfix for F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 2010-09-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 2010-08-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#JVC|JVC]]&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: genre bits will be now stored&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: Improved handling of repetition frames&lt;br /&gt;
* 2010-08-29: Improved support of [[IRMP_-_english#APPLE|APPLE]] protocols.&lt;br /&gt;
&lt;br /&gt;
* 2010-07-01: Bugfix: added a timeout for [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames. This avoids &#039;ghost commands&#039;.&lt;br /&gt;
&lt;br /&gt;
* 2010-06-26: Bugfix: deactivated [[IRMP_-_english#RECS80|RECS80]], [[IRMP_-_english#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] if interrupts frequency is low&lt;br /&gt;
&lt;br /&gt;
* 2010-06-25: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RCCAR|RCCAR]]&lt;br /&gt;
* 2010-06-25: Extended keyboard detection for [[IRMP_-_english#FDC|FDC]] protocol (IR keyboard)&lt;br /&gt;
* 2010-06-25: Interrupt frequency now up to 20kHz possible&lt;br /&gt;
&lt;br /&gt;
* 2010-06-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 2010-06-09: Corrected timing for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-06-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 2010-05-26: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 2010-05-26: Bugfix: detection of long keyboard press for [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-05-17: Bugfix [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol: corrected command bit mask&lt;br /&gt;
&lt;br /&gt;
* 2010-05-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 2010-05-16: Improved handling of automatic frame repetitions for [[IRMP_-_english#SIRCS|SIRCS]]-, [[IRMP_-_english#SAMSUNG32|SAMSUNG32]]-, and [[IRMP_-_english#NUBERT|NUBERT]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-04-28: Only some cosmetic code optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-04-16: Improved all timing tolerancies&lt;br /&gt;
&lt;br /&gt;
* 2010-04-12: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-29: Bugfix: detection of multiple [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
* 2010-03-29: Moved configuration data to  [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h]&lt;br /&gt;
* 2010-03-29: Introduced a program version in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 2010-03-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-16: Correction of RECS80 start bit timings&lt;br /&gt;
* 2010-03-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-15: Some optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-03-14: Port to PIC&lt;br /&gt;
&lt;br /&gt;
* 2010-03-11: Some adjustements for some ATMegas&lt;br /&gt;
&lt;br /&gt;
* 2010-03-07: Bugfix: Reset of state machine after a incomplete [[IRMP_-_english#RC5_+_RC5X|RC5]] frame&lt;br /&gt;
&lt;br /&gt;
* 2010-03-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#APPLE|APPLE]]&lt;br /&gt;
* 2010-03-05: Data  irmp_data.addr + irmp_data.command will be now stored in the bit order of the appropriate protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-03-04: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP_-_english#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol)&lt;br /&gt;
* 2010-03-04: Changed some timer tolerances changes of [[IRMP_-_english#SIRCS|SIRCS]]- and [[IRMP_-_english#KASEIKYO|KASEIKYO]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: corrected detection and suppression of automatic frame repetitions&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: device ID bits will be now stored in irmp_data.command (not irmp_data.address anymore)&lt;br /&gt;
* 2010-03-02: Enlargement of scan buffers (for logging)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-24: New variable flags in IRMP_DATA for detection of long key press&lt;br /&gt;
&lt;br /&gt;
* 2010-02-20: Bugfix [[IRMP_-_english#DENON|DENON]] protocol: repetition frame is now basically inverted&lt;br /&gt;
&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol-Varianten, z.&amp;amp;nbsp;B. [[IRMP_-_english#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#RC6_+_RC6A|RC6]]- and [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2010-02-19: Some improvements for [[IRMP_-_english#RC5_+_RC5X|RC5]] decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-13: Bugfix: Puls/Pause counters were 1 too low, now better detection of protokols with very short pulses&lt;br /&gt;
* 2010-02-13: Improved detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
&lt;br /&gt;
* 2010-02-12: New: [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-02-05: Eliminated a conflict between [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-01-07: First version&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
=== IR Abstract ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4&lt;br /&gt;
&lt;br /&gt;
=== SIRCS Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24 Protocol ===&lt;br /&gt;
&lt;br /&gt;
The ACP24-Protocol is used by Stiebel-Eltron-Aircons&lt;br /&gt;
&lt;br /&gt;
The structure of the 70 databits is :&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
These are converted into the following 16 bits from irmp_data.command:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Meaning of the symbols:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperature + 15 degree&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 degree&lt;br /&gt;
            0100        19 degree&lt;br /&gt;
            0101        20 degree&lt;br /&gt;
            0110        21 degree&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 degree&lt;br /&gt;
&lt;br /&gt;
    N    = Nightmode&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    VV   = fan, v must be 1!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      level 1&lt;br /&gt;
            01   1      level 2&lt;br /&gt;
            10   1      level 3&lt;br /&gt;
            11   1      Automatic&lt;br /&gt;
&lt;br /&gt;
    MMM  = Mode&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      turn off&lt;br /&gt;
            001  0      turn on&lt;br /&gt;
            001  1      cooling&lt;br /&gt;
            010  1      fan&lt;br /&gt;
            011  1      demist&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatic-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
To control the air con via [[IRSND_-_english|IRSND]], the following functions can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR Protocol ===&lt;br /&gt;
&lt;br /&gt;
The LG Air Con is controlled by an &#039;intelligent&#039; remote. These are the encoded data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Command                 AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16 Protocol (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG Protocol ===&lt;br /&gt;
&lt;br /&gt;
(was reverse engineered by several protocols (Daewoo or similar), so no direkt link to SAMSUNG documents is available)&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Daewoo-protocol, which uses the same principle of the sync-bits in the center of a frame, but words with different timings:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO Protocol (&amp;quot;Japan Protocol&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80 and RECS80 Extended Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5 and RC5x Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 and RC6A Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 and MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Other Protocols ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP on Youtube ==&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
== Other Artikels ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Infrared sender und receiver controlled via ip network with Android smartphone as remote control:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR Tester ===&lt;br /&gt;
&lt;br /&gt;
IR tester with LCD by Klaus Leidinger:&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller-projekte.de/Mikrocontroller/index.html&lt;br /&gt;
&lt;br /&gt;
=== IR Tester with AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
IR tester for Pollin AVR-NET-IO with Pollin ADD-ON Board:&lt;br /&gt;
&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR remote receiver by Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Receiver/Sender/Switch with Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR switch based on USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo controlled IR Sender ===&lt;br /&gt;
&lt;br /&gt;
Servo controlled IR Sender (adaptive) by Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Adaptive IR Remote Control ===&lt;br /&gt;
&lt;br /&gt;
Adaptive IR remote control by Robert and Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight by Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
STM8 Moodlight by Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity Mirror LED Ceiling Lamp ===&lt;br /&gt;
&lt;br /&gt;
Infinity Mirror LED ceiling lamp with remote control by Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Cinema Control ===&lt;br /&gt;
&lt;br /&gt;
Cinema control by Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Leading-Edge Control ===&lt;br /&gt;
&lt;br /&gt;
leading-edge control:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit as coffee bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino as IR Receiver ===&lt;br /&gt;
&lt;br /&gt;
Arduino as IR Receiver:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR Volume Control with Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
volume control with Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Shutdown RaspPI with IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP under RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED strip remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, a modular Firmware for AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind solver with LED stripes and IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control with ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library for STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP on STM32 - Construction Guidance ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Seminar Paper - Extension of Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Acknowledgment ==&lt;br /&gt;
&lt;br /&gt;
I thank Vlad Tepesch, Klaus Leidinger, Peter K., and Dániel Körmendi, who sent me many scan files of their IR remote controls.&lt;br /&gt;
&lt;br /&gt;
I thank Christian F. for his tipps relating to the port to PIC MCUs, gera for the port to PIC-C18 compiler, kichi (Michael K.) for the port to ARM STM32, Markus Schuster for the port to TI&#039;s Stellaris LM4F120 Launchpad (ARM Cortex M4), Matthias Frank for the port to XMega, Wolfgang S. for the port to ESP8266, Achill Hasler for the port to Teensy, Axel Schwenke for the port to STM8.&lt;br /&gt;
&lt;br /&gt;
Thanks to Dániel Körmendi, who added the LG-AIR protocol to [[IRSND_-_english|IRSND]]. Thanks to Ulrich v.d. Kammer for the Pentax protocol extension in [[IRSND_-_english|IRSND]].&lt;br /&gt;
&lt;br /&gt;
At least I will thank Jojo S. for his great job translating this documentation!&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
You can discuss IRMP &amp;amp; IRSND in the german thread [http://www.mikrocontroller.net/topic/162119 Infrared Multi Protocol Decoder].&lt;br /&gt;
&lt;br /&gt;
Have fun with IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99588</id>
		<title>IRMP - english</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99588"/>
		<updated>2018-08-29T14:55:41Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Integrating with ChibiOS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the English translation of the [[IRMP#top|german IRMP documentation]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
Project Intention:&lt;br /&gt;
&lt;br /&gt;
Because RC5 isn&#039;t only outdated, today its already obsolete and because more and more electronic devices in consumer electronics around us are used, it is time to develop an IR-decoder that can &#039;understand&#039; about 90 % of IR-remotes that are used in our daily life.&lt;br /&gt;
&lt;br /&gt;
This article indroduces &#039;IRMP&#039; as &amp;quot;Infrared-Multiprotocol-Decoder&amp;quot; in all details. The counterpart, [[IRSND_-_english|IRSND]] as IR-Encoder can be found in this [[IRSND_-_english|document]].&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrared Multiprotocol Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Connection of a IR receiver module to MCU]]&lt;br /&gt;
&lt;br /&gt;
=== Supported MCUs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] has been implemented on several MCU families:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- and XC8/C18 compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (tested on STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (tested on STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several ARM-Cortex-µCs, for Example STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Officially supported µC-Series]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports More µC-Series, community supported]&lt;br /&gt;
&lt;br /&gt;
=== Supported IR Protocols ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] - the infrared remote decoder, which can decode several protocols at once, is capable of decoding the following protocols (in alphabetic order):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;supported protocols&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protocol || Vendor&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FAN|FAN]] || FAN, remote for fans&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, e.g. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]] || various european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon and other japanese vendors which are members of the  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner &#039;&#039;&#039;(NEW!)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MERLIN|MERLIN]]  || MERLIN remote (Pollin article number: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName and many more asian vendors.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NUBERT|NUBERT]] || Nubert, e.g. Subwoofer Systems&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PANASONIC|PANASONIC]] || PANASONIC Beamer (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PENTAX|PENTAX]] || PENTAX (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6A]] || Philips, Kathrein and others, e.g. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCCAR|RCCAR]] || RC Car: IR remote for RC toys &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCMM|RCMM]] || Fujitsu-Siemens e.g. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ROOMBA|ROOMBA]] || iRobot Roomba vacuum cleaner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#S100|S100]] || similar to RC5, but 14 instead of 13 Bits and 56kHz modulation. vendor unknown.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG48|SAMSUNG48]] || various air conditions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (e.g. T-Home-Mediareceiver, MERLIN-keyboard(Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SPEAKER|SPEAKER]] || Speaker Systems like X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#VINCENT|VINCENT]] || Vincent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of these protocols can be activated separately. If you want, you can activate all protocols. If you need only one protocol, you can disable all others. It will only be compiled the code that has been selected by the user.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] source for the AVR and PIC MCUs has been created as part of the [[Word Clock]] project.&lt;br /&gt;
&lt;br /&gt;
=== Thread in Forum ===&lt;br /&gt;
&lt;br /&gt;
Intention for an own IRMP article is the following thread in Projects&amp;amp;Code [http://www.mikrocontroller.net/topic/162119 IRMP - Infrared Multi Protocol Decoder] (in german language).&lt;br /&gt;
&lt;br /&gt;
== IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC protocol, RGB remote control, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Some vendors use their own proprietary protocol, such as Sony, Samsung and Matsuhita. Philips has developed [[IRMP_-_english#RC5 + RC5X|RC5]] and of course used for own purposes.&lt;br /&gt;
[[IRMP_-_english#RC5 + RC5X|RC5]] was seen in Europe as &#039;&#039;that&#039;&#039; standard IR-protocol which was adopted by many european vendors. Nowadays is [[IRMP_-_english#RC5 + RC5X|RC5]] nearly nowhere used - it can be ticked as &amp;quot;dead&amp;quot;. Although the successor [[IRMP_-_english#RC6_+_RC6A|RC6]] is used in actual european hardware, it is also used rarely.&lt;br /&gt;
&lt;br /&gt;
Also japanese vendors tried to establish an own standard, the so called [[IRMP_-_english#KASEIKYO|Kaseikyo]]- (or also &amp;quot;Japan-&amp;quot;) protocol. This is with a bitlength of 48 bits more versatile. But it has no general acceptance until today - even if you find it in some appliances.&lt;br /&gt;
&lt;br /&gt;
Nowadays the [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol is used (also mainly in japanese devices) - indeed in various premium and NoName products. I estimate the market share to 80 % for the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-protocol. Nearly all remotes in my daily use utilize the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-IR-Code. This starts at the TV-set, goes over the DVD-player to the Notebook remote and reaches up to NoName-Multimedaia-Harddrive, just to mention a few samples.&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports the following IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance|Pulse Distance]], typ. Example: [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Width|Pulse Width]], typ. Example: [[IRMP_-_english#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP_-_english#Biphase|Biphase (Manchester)]], typ. Example: Philips [[IRMP_-_english#RC5_+_RC5X|RC5]], [[IRMP_-_english#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Position|Pulse Position (NRZ)]], typ. Example: [[IRMP_-_english#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance Width|Pulse Distance Width]], typ. Example: [[IRMP_-_english#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
The pulses are modulated - usually with 36 kHz or 38 kHz - to reduce environment influences such as Indoorlightning or sunlight.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Distance Coding can be discovered by the following rule:&lt;br /&gt;
&lt;br /&gt;
* there is only &#039;&#039;&#039;one pulse length&#039;&#039;&#039; and there are &#039;&#039;&#039;two different pause lengths&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Width Coding can be discovered by the following rule: &lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;only one pause length&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
This is a mix from Pulse Distance and Pulse Width Coding, so:&lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;two different pause lengths.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
In Biphase Coding the order of pulse and pause gives the bit value.&lt;br /&gt;
Therefore a Biphase-Coding can be discovered by this criteria:&lt;br /&gt;
&lt;br /&gt;
* there is exactly &#039;&#039;&#039;one&#039;&#039;&#039; pause- and one pulse length, as well as the &#039;&#039;&#039;double&#039;&#039;&#039; pulse/pause length&lt;br /&gt;
&lt;br /&gt;
Usually the length for the pulse and pause are equal, that means the signal shape is symmetric. But IRMP knows also protocols which use different puls/pause lengths. This case is for example the [[IRMP_-_english#A1TVBOX|A1TVBOX]]-protocol.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
The pulse position coding is known from usual UART&#039;s. Every bit has a fixed length here. Depending on the value (0 or 1), it is a pulse or a pause.&lt;br /&gt;
&lt;br /&gt;
Typical criteria for a &#039;&#039;&#039;pulse position protocol&#039;&#039;&#039; is:&lt;br /&gt;
* there are &#039;&#039;&#039;multiples&#039;&#039;&#039; of a basic pulse/pause length&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A tabular listing of different IR-protocols can be found here: [[IRMP_-_english#IR_Protocols_in_Detail|IR Protocols in Detail]].&#039;&#039;&#039;&lt;br /&gt;
The specified timings are typical values. In some remotes they differ up to 40 % in real life. Therefore [[IRMP_-_english#top|IRMP]] uses minimum/maximum limits to be tolerant with the timing.&lt;br /&gt;
&lt;br /&gt;
== Protocol Detection ==&lt;br /&gt;
&lt;br /&gt;
The most of the [[IRMP_-_english#top|IRMP]] decoded protocols have something in common: they show a start bit which is unique for their timing.&lt;br /&gt;
&lt;br /&gt;
According to this start bit timing the most protocols are discriminated. [[IRMP_-_english#top|IRMP]] measures the timing of the start bit and reorders its timing tables &amp;quot;on-the-fly&amp;quot; for the discovered protocol. So the following bits can be read sequential without the need of storing a complete frame.&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] does not wait for reading a complete frame to analyze, it starts decoding after the first pulse detection.&lt;br /&gt;
&lt;br /&gt;
If the first read start bit is not unique, [[IRMP_-_english#top|IRMP]] follows multiple possible protocols. If for plausible reasons one protocol is no more possible this track will be dropped.&lt;br /&gt;
&lt;br /&gt;
The detection is implemented as a [[Statemachine|state machine]], which is called interrupt driven with an frequency of typically 15.000 per second. the [[Statemachine|state machine]] knows the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the first pulse length of the start bit&lt;br /&gt;
* detect the pause length of the start bit&lt;br /&gt;
* detect the pulse length of the first data bit&lt;br /&gt;
&lt;br /&gt;
After that, the pulse/pause length of the start bit are known. Now all enabled protocols are searched for this length. If a protocol matches, the timing table for this protocol is loaded and the following bits are checked if the pulse/pause timing still fit to the limis.&lt;br /&gt;
&lt;br /&gt;
So the [[Statemachine|state machine]] continues with the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the pauses of the data bits&lt;br /&gt;
* detect the pulse length of the data bits&lt;br /&gt;
* check timing. If different, switch back to another valid IR protocol, otherwise return&lt;br /&gt;
* detect the sop bit if present in the protocol&lt;br /&gt;
* check data for plausibility, like CRC or other redundant data bits&lt;br /&gt;
* convert data to device address and command&lt;br /&gt;
* detect code repetition by long key press, set according flag&lt;br /&gt;
&lt;br /&gt;
Indeed the [[Statemachine|state machine]] is even more complex because some protocols have no start bit (e.g. [[IRMP_-_english#DENON|Denon]]) or have multiple start bits (4 in [[IRMP_-_english#B.26O|B&amp;amp;O]]) or have within the frame another sync bit (z.B. [[IRMP_-_english#SAMSUNG|Samsung]]). These extra conditions are caught in the code by protocol specific &amp;quot;special cases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Switching to an other protocol can happen multiple times during receiving of a frame, f.e. from [[IRMP_-_english#NEC42|NEC42]] (42 Bit) to [[IRMP_-_english#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), when a premature sync bit was detected. Or from [[IRMP_-_english#NEC + extended NEC|NEC]]/[[IRMP_-_english#NEC42|NEC42]] (32/42 Bit) to [[IRMP_-_english#JVC|JVC]] (16 Bit) when the stop bit premature occured. It is getting difficult when two possible protocols after the detection of the start bit use different codings, e.g. when the one protocol uses a [[IRMP_-_english#Pulse Distance|Pulse Distance Coding]] and the other uses a [[IRMP_-_english#Biphase|Biphase Coding (Manchester)]]. In this case [[IRMP_-_english#top|IRMP]] stores the necessary bits for both codings and releases later the one or the other.&lt;br /&gt;
&lt;br /&gt;
Furthermore some remotes are transmitting in particular protocols for redundance reasons (error detection) or for long key presses repetition frames. These will be discriminated by IRMP: the necessary frames for error detection are checked by IRMP, but not passed to the application. The other will be detected as long key press and flagged by IRMP.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9, Date: 2018-02-19&lt;br /&gt;
&lt;br /&gt;
Download of stable version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] &amp;amp; [[IRSND_-_english|IRSND]] is also available by SVN: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP in SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP on GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The version in the SVN can be a newer version than the stable version stored in Irmp.zip. In doubt, use the download link of Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see the history of the software changes here: [[IRMP_-_english#Software_History|Software History]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The source code can be easily compiled for AVR MCUs by loading the project file irmp.aps in AVR Studio 4.&lt;br /&gt;
&lt;br /&gt;
For other development environments it is simple to create a project or makefile. The source includes:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - IR-decoder core&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - all protocoll definitions&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - target independant definitions for AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include file for the application&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - user configuration&lt;br /&gt;
&lt;br /&gt;
Sample applications (main functions and timer configurations):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR with output on UART&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;Important: include only irmp.h to your application:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other include files are included within irmp.h. See also the sample application irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the preprocessor constant &#039;&#039;&#039;F_CPU in project or makefile&#039;&#039;&#039; must be defined. This should have at least the value of 8000000UL, processor speed should be at least 8 MHz. This applies to AVR targets and not for MCUs with PLL. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] is also running on PIC processors. For the PIC-CCS compiler are already the necessary preprocessor defines set, so that [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be directly used in the CCS environment. Only a short interrupt service routine like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
must be added. The Interrupt period time must be set to 66 µs (15 kHz).&lt;br /&gt;
&lt;br /&gt;
For AVR processors you will find an example for the usage of [[IRMP_-_english#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. The main things are the [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]] initializing of the timer and the processing of received IR commands. The received protocoll, the device address and the command will be output on the HW-UART.&lt;br /&gt;
&lt;br /&gt;
For the Stellaris LM4F120 Launchpad from TI (ARM Cortex M4) is a propriate timer init function already integrated in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used also with STM32 microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Another new implementation is available on the mbed platform.&lt;br /&gt;
=== avr-gcc Optimizations ===&lt;br /&gt;
&lt;br /&gt;
From version avr-gcc 4.7.x the option [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] can be used to make the call of the external function irmp_ISR() from the main ISR more efficent. This improves the performance of the ISR a little.&lt;br /&gt;
&lt;br /&gt;
Add the following compiler- and linker options:&lt;br /&gt;
&lt;br /&gt;
* additional compiler option: -flto&lt;br /&gt;
* additional linker options: -flto -Os&lt;br /&gt;
&lt;br /&gt;
If you forget the additional linker option -Os, the binary will be significant larger as it will no be optimized further. Also the option -flto must be passed to the linker, otherwise the link time optimization will not work.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration of [[IRMP_-_english#top|IRMP]] is done by settings in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] :&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#F_INTERRUPTS|number of interrupts per second]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_SUPPORT_xxx_PROTOCOL|supported IR protocols]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|hardware pin for IR receiver]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_LOGGING|IR logging]]&lt;br /&gt;
&lt;br /&gt;
=== Adjustments in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] will decode all protocols listed above in one ISR. For this, there are some settings necessary. These are set in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h].&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Number of interrupts per second. Should be set to a value from 10000 to 20000. The higher the value, the better the resolution and therefore the quality of detection. But a higher interrupt rate means also higher CPU load. The value of 15000 is in most cases a good compromise.&lt;br /&gt;
&lt;br /&gt;
Standardvalues:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On AVR controllers is a timer1 with 16 bit resolution used in the example [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. If for any reasons timer1 is not available, you can also use timer2 with 8 bit resolution.&lt;br /&gt;
&lt;br /&gt;
In this case timer2 will be configured as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example is valid for ATmega88/ATmega168/ATmega328. For other AVR MCUs check the datasheet.&lt;br /&gt;
&lt;br /&gt;
You must not forget to adjust the ISR for timer2 as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Here you can select which protocols should be supported by [[IRMP_-_english#top|IRMP]]. Standardprotocols are activated by default.&lt;br /&gt;
&lt;br /&gt;
Would you like to turn on more protocols or turn off some other for memory saving reasons, then the corresponding values in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] must be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [[IRMP_-_english#top|IRMP]] supported IR protocol consumes the noted amount of code. Here you can apply optimizations: for example the modulation frequency of 455 kHz for the [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol is far away from the frequencies that are used by other protocols. Maybe you need a different IR receiver, otherwise you could disable these protocols. For example you cannot receive a [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol (455kHz) with a TSOP1738 / TSOP 31238.&lt;br /&gt;
&lt;br /&gt;
Furthermore the protocols [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP_-_english#FDC|FDC]]/[[IRMP_-_english#RCCAR|RCCAR]] are only reliable detected at a frequency starting at 15 kHz. For [[IRMP_-_english#LEGO|LEGO]] it is even 20 kHz. When you want to use these protocols, you must adjust [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]]. Otherwise, during compilation you will get a warning and the corresponding protocols are automatically disabled.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
This constant defines the pin where the IR receiver is connected.&lt;br /&gt;
&lt;br /&gt;
Default value is PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two values must match your hardware configuration.&lt;br /&gt;
&lt;br /&gt;
This applies also to STM32 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the corresponding section for STM8 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PIC controllers there is only the define for &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - depending on compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using ChibiOS HAL, define a pin with the name &#039;&#039;&#039;IR_IN&#039;&#039;&#039; in your board config (board.chcfg) of ChibiOS&lt;br /&gt;
and regenerate the board files. When you want to use another name for the pin, change the constant &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039;&lt;br /&gt;
in irmpconfig.h. Use the name of the pin from the board config and prefix it with &amp;quot;LINE_&amp;quot;, as IRMP is using&lt;br /&gt;
the &amp;quot;line&amp;quot;-variant of the PAL-interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you turn on callbacks, on any level change at the input the callback function is called. This could be use to visualize incoming IR signals by driving another output pin.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
When using IRMP with ChibiOS/RT or ChibiOS/NIL, you can use their Event-module to wake a thread as soon as new&lt;br /&gt;
IR data was received and decoded.&lt;br /&gt;
&lt;br /&gt;
Set the &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; constant in irmpconfig.h to 1 to enable this. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definies the&lt;br /&gt;
value in the event bitmask that should symbolize the IRMP event. Use &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; to define&lt;br /&gt;
the variable name of the thread pointer that the event is sent to.&lt;br /&gt;
&lt;br /&gt;
Change irmpconfig.h like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use the event in your ChibiOS-project like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // use data in irmp_data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
With IRMP_LOGGING the logging of received IR frames can be turned on.&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation can be found here: [[IRMP_-_english#Scanning_of_unknown_IR_Protocols|Scanning of unknown IR Protocols]].&lt;br /&gt;
&lt;br /&gt;
=== IRMP in Practice ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] supported protocols use partly variable, partly fixed bit length from 2 up to 48 bits. These will be described by preprocessor defines.&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] separates these IR frames always into 3 sections:&lt;br /&gt;
&lt;br /&gt;
 1. protocol ID&lt;br /&gt;
 2. address or vendorcode&lt;br /&gt;
 3. command&lt;br /&gt;
&lt;br /&gt;
with this function&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
you can recall a decoded message. The return value is 1 when a message has been received, otherwise it is 0. In the first case the struct members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contain valid information.&lt;br /&gt;
&lt;br /&gt;
That means: finally you&#039;ll get simply three values (protocol, address and command) that can be checked with an if or switch statement. &lt;br /&gt;
Here is a sample decoder which checks for key 1-9 on a remote:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are possible constants for irmp_data.protocol, see also [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values of address and the command code of an unknown remote can be received and printed over UART or LCD. Then these values can be used hard coded in your decoder routine. Or you write a teaching routine, where you need to press a key once to store the code in an EEPROM. A sample for this can be found in [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Another [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup example main function] is included in the zip file, showing also the timer initialization.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Debouncing&amp;quot; of Keys ===&lt;br /&gt;
&lt;br /&gt;
To distinguish between long key press or a single press, the bit mask IRMP_FLAG_REPETITION exists. This will be set in struct member &#039;&#039;&#039;flags&#039;&#039;&#039; when a key on the remote is pressed for longer time and therefore the same command is repeated in short periods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // long key press&lt;br /&gt;
      // either:&lt;br /&gt;
      //   ignore the (repeated) key&lt;br /&gt;
      // or:&lt;br /&gt;
      //   use this information for a repeat function&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // key was pressed again&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be used to &amp;quot;debounce&amp;quot; the keys 0-9 by ignoring commands with bit IRMP_FLAG_REPETITION set. For keys like &#039; VOLUME+&#039; or &#039;VOLUME-&#039; using the repetition could be useful, maybe to [[LED-Fading|fade a LED]].&lt;br /&gt;
&lt;br /&gt;
If you want to decode only singe keys, you can reduce the block above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Its a new key&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mode of Operation ==&lt;br /&gt;
&lt;br /&gt;
The  &amp;quot;Working Horse&amp;quot; of [[IRMP_-_english#top|IRMP]] is the interrupt service routine irmp_ISR() which should be called 15000 times per second. Is this rate different, the constant [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] needs to be adjusted.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detects first the length and the form of the startbit(s) and determines the used protocols by this information. As soon as the protocol was identified, the further bits are parameterized to read the following bits most efficient until the IR command is complete.&lt;br /&gt;
&lt;br /&gt;
Just to stop slashers:&lt;br /&gt;
&lt;br /&gt;
I know that the ISR is quite large. But as it acts as a state machine, the effective executed code per cycle is relative small. While it is &amp;quot;dark&amp;quot; (and that is the case for the most time ;-)) the spent time is vanishing short. In the WordClock project for example are called 8 ISR&#039;s with the same timer, there is irmp_ISR() only one amongst many others. For at least 8 MHz CPU clock no timing problems occured. Therefor I see really no problem in the length of the ISR.&lt;br /&gt;
&lt;br /&gt;
A crystal is not a neccessary must, it works well with the internal AVR oscillator. Remember to set the correct fuses for the CPU to run at 8 MHz, check [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] for correct values for an ATMEGA88.&lt;br /&gt;
&lt;br /&gt;
== Scanning of unknown IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
Changing in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the value for [[IRMP_-_english#IRMP_LOGGING|IRMP_LOGGING]] to 1, then a logging in [[IRMP_-_english#top|IRMP]] will be turned on: the bright- and darkphases will be sent via UART with 9600 bit/s: 1=dark, 0=bright. Maybe the constans in the functions uart_init() and uart_putc() must be adjusted, this depends on the used AVR MCU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark: for PIC-processors there is an own logging module named [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. This makes it possible to log via USB. This applies not to the AVR version&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you record these protocol scans with a terminal program and save them as a textfile, you can use these files for analyzing the frames in ordner to add a yet unknown protocol to [[IRMP_-_english#top|IRMP]] - see next chapter.&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that is not supported by [[IRMP_-_english#top|IRMP]] you can send me ([http://www.mikrocontroller.net/user/show/ukw ukw]) the scan files. Then I can check if the protocol fits into the IRMP concepts and adapt the sources if applicable.&lt;br /&gt;
&lt;br /&gt;
== IRMP under Linux and Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be compiled under Linux for testing IR scans in textfiles. In the subdirectory &#039;IR-Data&#039; you will find such files that you can use as input files for [[IRMP_-_english#top|IRMP]].&lt;br /&gt;
&lt;br /&gt;
The compilation of [[IRMP_-_english#top|IRMP]] is started by:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
This will generate 3 IRMP versions:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version for 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version for 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version for 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Starting IRMP ===&lt;br /&gt;
&lt;br /&gt;
The calling syntax is:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
The given options are exclusive, that means only one option per call is valid:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             print a list with pulses and pauses&lt;br /&gt;
   -a analyze           analyse the puls/pauses and write a &amp;quot;spectrum&amp;quot; in ASCII format&lt;br /&gt;
   -v verbose           verbose output&lt;br /&gt;
   -p  Print Timings    print a timing table for all protocols&lt;br /&gt;
&lt;br /&gt;
Samples:&lt;br /&gt;
&lt;br /&gt;
=== Normal Output ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output Lists ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analysing ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you see the measured times of all pulses and pauses as (horizontal) bell shaped curves, which of course are not quite ideal displayed due to the ASCII formatting. The smaller the measured channels, the better is the timing of the remote.&lt;br /&gt;
&lt;br /&gt;
The above output can be read as:&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pulse length between 9000 and 9200 µs, in average 9102 µs. The deviation from this average is about 1.1 %&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pause length between 4300 and 4500 µs, the average is 4424 µs. The error is about 2.8 %.&lt;br /&gt;
&lt;br /&gt;
* the pulse length of a databit is between 500 and 700 µs, in average 650 µs, the error is (quite large!) 23.1 %&lt;br /&gt;
&lt;br /&gt;
Further there are two more pauses with different length (for bits 0 and 1). Checking this I leave to the willing reader ;-)&lt;br /&gt;
&lt;br /&gt;
=== Verbose Output ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting under Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used as well under Windows, like:&lt;br /&gt;
&lt;br /&gt;
* start command line console&lt;br /&gt;
* change to directory &#039;irmp&#039;&lt;br /&gt;
* enter:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
The same options apply as for the Linux version.&lt;br /&gt;
&lt;br /&gt;
=== Long Outputs ===&lt;br /&gt;
&lt;br /&gt;
As some outputs are pretty large, it is recommended to redirect the output to a file or filter for paging:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Remote Controls ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protocol || Name || Device || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports more and more also camera remotes like:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
The command variety isn&#039;t really large. Usually the cameras understand only the command:&lt;br /&gt;
&amp;quot;Trigger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is a short table for [[IRMP_-_english#PENTAX|PENTAX]] cameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Command || Function&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Trigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || change Zoomlevel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because there is no address designated in the [[IRMP_-_english#PENTAX|PENTAX]]-protocol, this should be set for sending in [[IRSND_-_english|IRSND]] to 0x0000. You should also use a crystal in this case because especially the Nikons are very fussy regarding the timing.&lt;br /&gt;
&lt;br /&gt;
== IR Keyboards ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]]  supports from version 1.7.0 also IR keyboards, namely the FDC-3402 &amp;lt;s&amp;gt; from www.pollin.de (partno. 711 056) for less than 2 Euro.&amp;lt;/s&amp;gt; (not available as of 19.09.2017 )&lt;br /&gt;
&lt;br /&gt;
On detection of a key press the following data is returned:&lt;br /&gt;
&lt;br /&gt;
 Protocol-Number  (irmp_data.protocol): 18&lt;br /&gt;
 Address          (irmp_data.address) : 0x003F&lt;br /&gt;
&lt;br /&gt;
As command (irmp_data.command) the following values are returned:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special keys left side:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above values are for pressing a key. On release,  [[IRMP_-_english#top|IRMP]] sets also Bit 8 (0x80) in the command.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F&lt;br /&gt;
&lt;br /&gt;
Exception for the ON / OFF key: This one sends only for key press a code, not for release.&lt;br /&gt;
&lt;br /&gt;
Is a key pressed for a longer time, it will be notified in irmp_data.flag&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x00&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When key combinations (like a capital &#039;A&#039;) are pressed, then the return values are a sequence like this:&lt;br /&gt;
&lt;br /&gt;
      Left SHIFT-key pressed:    0x0002&lt;br /&gt;
      Key &#039;a&#039; pressed:           0x001F&lt;br /&gt;
      Key &#039;a&#039; released:          0x009F&lt;br /&gt;
      Left SHIFT-key released:   0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] you will find a function get_fdc_key() for the Linux version, which can be used as a template to convert the FDC keycodes into the corresponding ASCII codes. This function can be used either local on the MCU to decode the keycodes, or on the hostsystem (e.g. PC) where the IRMP data structure is sent to. Therefore the function incl. preprocessor constands should be copied to your application code.&lt;br /&gt;
&lt;br /&gt;
Here is an excerpt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
 &lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And at least an example for the usage of function get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All non-printable characters are coded as:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Key               || Constant                || Value&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menu              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Back              || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Forward           || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adress            || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Window            || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Page           || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| New Page          || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Font              || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Print             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| On/Off            || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Insert            || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Delete            || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| End               || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor right      || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor down       || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Page up           || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Page down         || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Left Mousebutton  || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Right Mousebutton || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The function get_fdc_key() considers the holding of key pressed of Shift-, Ctrl- and ALT. For this reason not only the writing of capital letters works, but also the selection of special characters with the key combination ALT + key, e.g. ALT + m -&amp;gt; µ or ALT + q -&amp;gt; @. Also you can send CTRL-A to CTRL-Z by using the Ctrl key. The Caps Lock key is ignored, as I regard this key as the most unnecessary key at all ;-)&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== IR Protocols in Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC Protocol|NEC + extended NEC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data NEC || 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data ext. NEC || 16 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 9000µs pulse, 2250µs pause, 560µs pulse, ~100ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC16 Protocol (JVC)|JVC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 12 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause, 6000µs pause if keyboard repetition&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 8 address bits + 1 sync bit + 8 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 560µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 42 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 address bits + 13 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 110ms (beginning from start bit), 9000µs pulse, 2250µs pause, 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#ACP24 Protocol|ACP24]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 70 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 70 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 390µs pulse, 950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 390µs pulse,  950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 390µs pulse, 13000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 390µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LGAIR Protocol|LGAIR]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 28 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 16 command bits + 4 checksum bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first (&#039;&#039;&#039;differing&#039;&#039;&#039; to [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SAMSUNG Protocol|SAMSUNG]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data(1) bits + 1 sync bit + 20 data(2)-bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data(1) || 16 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data(2) || 4 ID bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || repetition after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || Repetition after approx. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 32 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 8 Bits + 8 inverted Bits + 8 Bits + 8 inverted Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || one after approx. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 45 msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#MATSUHITA Protocol|MATSUSHITA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 customer bits + 6 command bits + 12 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 22 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 11 command bits + 11 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#KASEIKYO_Protocol_.28.22Japan Protocol.22.29|KASEIKYO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 customer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 ID bits + 8 parity bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3380µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 423µs pulse,  423µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 423µs pulse, 1269µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 423µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 80ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start Bits + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 3 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80EXT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 4 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 3637µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Denon Protocol|DENON]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (in practice, theoretically: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 5 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 6 data bits + 2 extension bits + 2 data construction bits (normal: 00, inverted: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || no Start Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse, 775µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 310µs pulse, 1780µs pause (in practice, theoretically: 275µs pulse, 1900µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 310µs pulse (310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse)&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || after 65ms with inverted command bits (data construction bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || both frames after 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 11100000 + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1060µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  437µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 start bits + 16 data bits + 1 trailer bit + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 1 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 2 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 3 || 200µs pulse, 15425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 4 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 200µs pulse, 9175µs pause&lt;br /&gt;
|-&lt;br /&gt;
| R Bit || 200µs pulse, 6050µs pause, repeats the last bit&lt;br /&gt;
|-&lt;br /&gt;
| Trailer Bit || 200µs pulse, 12300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 200µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 40 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 12 x 0 Bits + 4 press/release bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2085µs pulse, 966µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 300µs pulse,  220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 300µs pulse, 715µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 300µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Press Key || press/release bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Release Key || press/release bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of approx. 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 2 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 2 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse,  1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 3500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 56 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 24 bits (010000000000010000000001) + 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3600µs pulse, 1600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 565µs pulse,  316µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 565µs pulse, 1140µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 565µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 6 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 1000µs pulse,  1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1000µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 1000µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 210µs pulse, 6218µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pulse,  1400µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 12 command bits + 4 crc bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 1026µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse,  263µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 553µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#VINCENT|VINCENT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 8 command bits + 8 repeated command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2500µs pulse, 4600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1540µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 13 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse,  900µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 450µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RCMM_Protocol|RCMM]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 start bit + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM32 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM24 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM12 || 4 address bits (= 2 mode bits + 2 device bits) + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 500µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 00 Bits || 230µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 01 Bits || 230µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 10 Bits || 230µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 11 Bits || 230µs pulse, 720µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 230µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SIRCS_Protocol|SIRCS]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequency ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 12-20 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 7 command bits + 5 address bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1200µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || twice after approx. 25ms, that means: 2nd und 3rd Frame&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || starting with 4th identical frame, distance approx. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse distance Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse, 1300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th etc. indentical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
This protocol is very similar to [[IRMP_-_english#NUBERT|NUBERT]], but here it will be sent only one frame. Additionally there are 11 instead of 10 data bits and no stop bit. The pause time between frame repetitions is substantial lower.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 11 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 380µs pulse, 1280µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 6,6ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1250µs pulse, 440µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 440µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after approx. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th ... identical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 7 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 930µs pulse, 2790µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 3 times after 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC5 and RC5x Protocol|RC5 + RC5X]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start Bits + 12 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5 || 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 start bit + 13 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5X || 1 inverteds command bit + 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 data bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 14 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 inverteds command bit + 1 toggle bit + 5 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC6 and RC6A Protocol|RC6 + RC6A]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (000) + 1 toggle bit + 16 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (110) + 1 toggle bit + 31 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6 || 8 address bits + 8 Command Bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A || &amp;quot;1&amp;quot; + 14 customer bits + 8 system bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 mode bits (&amp;quot;110&amp;quot;) + 1 toggle bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 toggle(!) + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2666µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 444µs pause, 444µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 444µs pulse, 444µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Grundig Protocol|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms pause + N Info-Frames + 117,76ms pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 pre bit + 1 start bit + 9 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Grundig || 9 command bits + 0 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Nokia || 8 command bits + 8 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#IR60_.28SDA2008_and_MC14497P.29|IR60]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 start bit + 101111 + 0 stop bits + 22ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Data Frame || 1 start bit + 7 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz? (Merlin-Tastatur mit Ruwido protocol: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 start bit + 22 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 start bit + 17 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Siemens || 11 address bits + 10 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Data Ruwido || 9 address bits + 7 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 275µs pause, 275µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once with repeat bit set (?)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 16 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 250µs pulse, 150µs + 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 250µs pulse, 150µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetric&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 210µs pulse, 210µs + 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 210µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 address bits + 2 special bits +  6 command bits + 4 special bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pause, 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 2 additinal frames with special bits set&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || only repetition of the 2nd frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protocols ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 3 address bits + 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 800µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Length || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes of IRMP in 3.0.x ===&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 2018-02-19: corrected handling of irmp_flags for invalid frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 2017-08-25: New protocol: IRMP16 for transparent 16 bit data communication&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 2016-11-18: Corrected buffer overflow in irmp-main-avr-uart.c&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-19: New protocol [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-09: New protocol [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (air conditioner)]]&lt;br /&gt;
* 2016-09-09: Some modifications for Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 2016-01-16: Some corrections of port to ESP8266&lt;br /&gt;
* 2016-01-16: Added port to MBED&lt;br /&gt;
* 2016-01-16: Added several hardware dependent example main source files&lt;br /&gt;
&lt;br /&gt;
=== Older Versions ===&lt;br /&gt;
&lt;br /&gt;
* 2015-11-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 2015-11-17: Port to ESP8266&lt;br /&gt;
* 2015-11-17: Port to Teensy (3.x)&lt;br /&gt;
* 2015-11-10: Added support for STM8 microcontroller&lt;br /&gt;
* 2015-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
* 2015-06-15: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ACP24|ACP24]]&lt;br /&gt;
* 2015-05-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#S100|S100]]&lt;br /&gt;
* 2015-05-29: Some smaller corrections&lt;br /&gt;
* 2015-05-28: Added Logging for XMega&lt;br /&gt;
* 2015-05-28: Timing corrections  for FAN protocol&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#MERLIN|MERLIN]]&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FAN|FAN]]&lt;br /&gt;
* 2015-05-18: Added F_CPU macro for STM32L1XX&lt;br /&gt;
* 2015-05-18: Some corrections for XMega port&lt;br /&gt;
* 2015-04-23: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* 2015-04-23: Port to AVR XMega&lt;br /&gt;
* 2014-09-19: Bugfix: added missing newline before #else&lt;br /&gt;
* 2014-09-18: Added logging for ARM STM32F10X&lt;br /&gt;
* 2014-09-17: Corrected PROGMEM access to array irmp_protocol_names[].&lt;br /&gt;
* 2014-09-15: Changed timing tolerances for [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol&lt;br /&gt;
* 2014-09-15: Moved  irmp_protocol_names to flash, additional UART routines in irmp-main-avr-uart.c&lt;br /&gt;
* 2014-07-21: Port to PIC 12F1840&lt;br /&gt;
* 2014-07-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 2014-07-09: Some small corrections&lt;br /&gt;
* 2014-07-01: Added logging for ARM_STM32F4XX&lt;br /&gt;
* 2014-07-01: IRMP port for PIC XC8 compiler, removed variadic macros because of stupid XC8 compiler :-(&lt;br /&gt;
* 2014-06-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LGAIR|LGAIR]]&lt;br /&gt;
* 2014-05-30: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SPEAKER|SPEAKER]]&lt;br /&gt;
* 2014-05-30: Optimized timings for [[IRMP_-_english#SAMSUNG|SAMSUNG]] protocol&lt;br /&gt;
* 2014-02-20: Corrected decoding of [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2014-02-19: &#039;&#039;&#039;New protocols&#039;&#039;&#039;: [[IRMP_-_english#RCMM|RCMM32, RCMM24 and RCMM12]]&lt;br /&gt;
* 2014-09-17: Optimized timing for [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: Optimized detection of [[IRMP_-_english#ORTEK|ORTEK (Hama)]] frames&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 2013-03-12: Changed timing tolerancies for [[IRMP_-_english#RECS80|RECS80]]- and  [[IRMP_-_english#RECS80EXT|RECS80EXT]] protocol&lt;br /&gt;
* 2013-01-21: Corrected detection of repetition frame beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2013-01-17: Corrected frame detection beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-12-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 2012-12-07: Improved detection von [[IRMP_-_english#DENON|DENON]] repetition frame&lt;br /&gt;
* 2012-11-19: Port to Stellaris LM4F120 TI Launchpad (ARM Cortex M4)&lt;br /&gt;
* 2012-11-06: Corrected [[IRMP_-_english#DENON|DENON]] frame detection&lt;br /&gt;
* 2012-10-26: Some timer corrections and adaptations for Arduino&lt;br /&gt;
* 2012-07-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#BOSE|BOSE]]&lt;br /&gt;
* 2012-06-18: Added support for ATtiny87/167&lt;br /&gt;
* 2012-06-05: Some smaller corrections of port to ARM STM32&lt;br /&gt;
* 2012-06-05: Correction of include in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 2012-06-05: Bugfix, if only [[IRMP_-_english#NEC_+_extended_NEC|NEC]] and [[IRMP_-_english#NEC42|NEC42]] activated&lt;br /&gt;
* 2012-05-23: Port to ARM STM32&lt;br /&gt;
* 2012-05-23: Bugfix frame detection for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-02-27: Bugfix in IR60-Decoder&lt;br /&gt;
* 2012-02-27: Bugfix in CRC calculation of  [[IRMP_-_english#KASEIKYO|KASEIKYO]] frames&lt;br /&gt;
* 2012-02-27: Port to C18 Compiler for PIC microcontrollers&lt;br /&gt;
* 2012-02-13: Bugfix: most significant bit in Address wrong in [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol, if [[IRMP_-_english#NEC42|NEC42]] protocol activated, too&lt;br /&gt;
* 2012-02-13: Corrected timing of [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol&lt;br /&gt;
* 2012-02-13: [[IRMP_-_english#KASEIKYO|KASEIKYO]]: Genre2 bits will be now stored in upper nibble of flags&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#KATHREIN|KATHREIN]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#THOMSON|THOMSON]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LEGO|LEGO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC16|NEC16]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC42|NEC42]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NETBOX|NETBOX]]&lt;br /&gt;
* 2011-09-20: Port to ATtiny84 and ATtiny85&lt;br /&gt;
* 2011-09-20: Improved key repetition detection in [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
* 2011-09-20: Improved decoding of [[IRMP_-_english#Biphase|Biphase]] protocols&lt;br /&gt;
* 2011-09-20: Fixed some smaller bugs in [[IRMP_-_english#RECS80|RECS80]] decoder&lt;br /&gt;
* 2011-09-20: Corrected detection of additional bits in SIRCS protocol&lt;br /&gt;
* 2011-01-18: Some corrections for [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2011-01-18: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
* 2011-01-18: [[IRMP_-_english#SIRCS|SIRCS]]: additional bits (&amp;gt;12) will be stored in address&lt;br /&gt;
* 2011-01-18: Some timing corrections for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-09-04: Bugfix for F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 2010-09-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 2010-08-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#JVC|JVC]]&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: genre bits will be now stored&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: Improved handling of repetition frames&lt;br /&gt;
* 2010-08-29: Improved support of [[IRMP_-_english#APPLE|APPLE]] protocols.&lt;br /&gt;
&lt;br /&gt;
* 2010-07-01: Bugfix: added a timeout for [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames. This avoids &#039;ghost commands&#039;.&lt;br /&gt;
&lt;br /&gt;
* 2010-06-26: Bugfix: deactivated [[IRMP_-_english#RECS80|RECS80]], [[IRMP_-_english#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] if interrupts frequency is low&lt;br /&gt;
&lt;br /&gt;
* 2010-06-25: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RCCAR|RCCAR]]&lt;br /&gt;
* 2010-06-25: Extended keyboard detection for [[IRMP_-_english#FDC|FDC]] protocol (IR keyboard)&lt;br /&gt;
* 2010-06-25: Interrupt frequency now up to 20kHz possible&lt;br /&gt;
&lt;br /&gt;
* 2010-06-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 2010-06-09: Corrected timing for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-06-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 2010-05-26: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 2010-05-26: Bugfix: detection of long keyboard press for [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-05-17: Bugfix [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol: corrected command bit mask&lt;br /&gt;
&lt;br /&gt;
* 2010-05-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 2010-05-16: Improved handling of automatic frame repetitions for [[IRMP_-_english#SIRCS|SIRCS]]-, [[IRMP_-_english#SAMSUNG32|SAMSUNG32]]-, and [[IRMP_-_english#NUBERT|NUBERT]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-04-28: Only some cosmetic code optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-04-16: Improved all timing tolerancies&lt;br /&gt;
&lt;br /&gt;
* 2010-04-12: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-29: Bugfix: detection of multiple [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
* 2010-03-29: Moved configuration data to  [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h]&lt;br /&gt;
* 2010-03-29: Introduced a program version in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 2010-03-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-16: Correction of RECS80 start bit timings&lt;br /&gt;
* 2010-03-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-15: Some optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-03-14: Port to PIC&lt;br /&gt;
&lt;br /&gt;
* 2010-03-11: Some adjustements for some ATMegas&lt;br /&gt;
&lt;br /&gt;
* 2010-03-07: Bugfix: Reset of state machine after a incomplete [[IRMP_-_english#RC5_+_RC5X|RC5]] frame&lt;br /&gt;
&lt;br /&gt;
* 2010-03-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#APPLE|APPLE]]&lt;br /&gt;
* 2010-03-05: Data  irmp_data.addr + irmp_data.command will be now stored in the bit order of the appropriate protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-03-04: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP_-_english#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol)&lt;br /&gt;
* 2010-03-04: Changed some timer tolerances changes of [[IRMP_-_english#SIRCS|SIRCS]]- and [[IRMP_-_english#KASEIKYO|KASEIKYO]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: corrected detection and suppression of automatic frame repetitions&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: device ID bits will be now stored in irmp_data.command (not irmp_data.address anymore)&lt;br /&gt;
* 2010-03-02: Enlargement of scan buffers (for logging)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-24: New variable flags in IRMP_DATA for detection of long key press&lt;br /&gt;
&lt;br /&gt;
* 2010-02-20: Bugfix [[IRMP_-_english#DENON|DENON]] protocol: repetition frame is now basically inverted&lt;br /&gt;
&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol-Varianten, z.&amp;amp;nbsp;B. [[IRMP_-_english#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#RC6_+_RC6A|RC6]]- and [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2010-02-19: Some improvements for [[IRMP_-_english#RC5_+_RC5X|RC5]] decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-13: Bugfix: Puls/Pause counters were 1 too low, now better detection of protokols with very short pulses&lt;br /&gt;
* 2010-02-13: Improved detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
&lt;br /&gt;
* 2010-02-12: New: [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-02-05: Eliminated a conflict between [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-01-07: First version&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
=== IR Abstract ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4&lt;br /&gt;
&lt;br /&gt;
=== SIRCS Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24 Protocol ===&lt;br /&gt;
&lt;br /&gt;
The ACP24-Protocol is used by Stiebel-Eltron-Aircons&lt;br /&gt;
&lt;br /&gt;
The structure of the 70 databits is :&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
These are converted into the following 16 bits from irmp_data.command:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Meaning of the symbols:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperature + 15 degree&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 degree&lt;br /&gt;
            0100        19 degree&lt;br /&gt;
            0101        20 degree&lt;br /&gt;
            0110        21 degree&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 degree&lt;br /&gt;
&lt;br /&gt;
    N    = Nightmode&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    VV   = fan, v must be 1!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      level 1&lt;br /&gt;
            01   1      level 2&lt;br /&gt;
            10   1      level 3&lt;br /&gt;
            11   1      Automatic&lt;br /&gt;
&lt;br /&gt;
    MMM  = Mode&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      turn off&lt;br /&gt;
            001  0      turn on&lt;br /&gt;
            001  1      cooling&lt;br /&gt;
            010  1      fan&lt;br /&gt;
            011  1      demist&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatic-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
To control the air con via [[IRSND_-_english|IRSND]], the following functions can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR Protocol ===&lt;br /&gt;
&lt;br /&gt;
The LG Air Con is controlled by an &#039;intelligent&#039; remote. These are the encoded data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Command                 AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16 Protocol (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG Protocol ===&lt;br /&gt;
&lt;br /&gt;
(was reverse engineered by several protocols (Daewoo or similar), so no direkt link to SAMSUNG documents is available)&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Daewoo-protocol, which uses the same principle of the sync-bits in the center of a frame, but words with different timings:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO Protocol (&amp;quot;Japan Protocol&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80 and RECS80 Extended Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5 and RC5x Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 and RC6A Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 and MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Other Protocols ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP on Youtube ==&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
== Other Artikels ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Infrared sender und receiver controlled via ip network with Android smartphone as remote control:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR Tester ===&lt;br /&gt;
&lt;br /&gt;
IR tester with LCD by Klaus Leidinger:&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller-projekte.de/Mikrocontroller/index.html&lt;br /&gt;
&lt;br /&gt;
=== IR Tester with AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
IR tester for Pollin AVR-NET-IO with Pollin ADD-ON Board:&lt;br /&gt;
&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR remote receiver by Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Receiver/Sender/Switch with Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR switch based on USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo controlled IR Sender ===&lt;br /&gt;
&lt;br /&gt;
Servo controlled IR Sender (adaptive) by Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Adaptive IR Remote Control ===&lt;br /&gt;
&lt;br /&gt;
Adaptive IR remote control by Robert and Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight by Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
STM8 Moodlight by Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity Mirror LED Ceiling Lamp ===&lt;br /&gt;
&lt;br /&gt;
Infinity Mirror LED ceiling lamp with remote control by Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Cinema Control ===&lt;br /&gt;
&lt;br /&gt;
Cinema control by Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Leading-Edge Control ===&lt;br /&gt;
&lt;br /&gt;
leading-edge control:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit as coffee bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino as IR Receiver ===&lt;br /&gt;
&lt;br /&gt;
Arduino as IR Receiver:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR Volume Control with Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
volume control with Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Shutdown RaspPI with IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP under RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED strip remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, a modular Firmware for AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind solver with LED stripes and IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control with ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library for STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP on STM32 - Construction Guidance ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Seminar Paper - Extension of Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Acknowledgment ==&lt;br /&gt;
&lt;br /&gt;
I thank Vlad Tepesch, Klaus Leidinger, Peter K., and Dániel Körmendi, who sent me many scan files of their IR remote controls.&lt;br /&gt;
&lt;br /&gt;
I thank Christian F. for his tipps relating to the port to PIC MCUs, gera for the port to PIC-C18 compiler, kichi (Michael K.) for the port to ARM STM32, Markus Schuster for the port to TI&#039;s Stellaris LM4F120 Launchpad (ARM Cortex M4), Matthias Frank for the port to XMega, Wolfgang S. for the port to ESP8266, Achill Hasler for the port to Teensy, Axel Schwenke for the port to STM8.&lt;br /&gt;
&lt;br /&gt;
Thanks to Dániel Körmendi, who added the LG-AIR protocol to [[IRSND_-_english|IRSND]]. Thanks to Ulrich v.d. Kammer for the Pentax protocol extension in [[IRSND_-_english|IRSND]].&lt;br /&gt;
&lt;br /&gt;
At least I will thank Jojo S. for his great job translating this documentation!&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
You can discuss IRMP &amp;amp; IRSND in the german thread [http://www.mikrocontroller.net/topic/162119 Infrared Multi Protocol Decoder].&lt;br /&gt;
&lt;br /&gt;
Have fun with IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99587</id>
		<title>IRMP - english</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP_-_english&amp;diff=99587"/>
		<updated>2018-08-29T14:42:35Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Add ChibiOS-Port&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the English translation of the [[IRMP#top|german IRMP documentation]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
Project Intention:&lt;br /&gt;
&lt;br /&gt;
Because RC5 isn&#039;t only outdated, today its already obsolete and because more and more electronic devices in consumer electronics around us are used, it is time to develop an IR-decoder that can &#039;understand&#039; about 90 % of IR-remotes that are used in our daily life.&lt;br /&gt;
&lt;br /&gt;
This article indroduces &#039;IRMP&#039; as &amp;quot;Infrared-Multiprotocol-Decoder&amp;quot; in all details. The counterpart, [[IRSND_-_english|IRSND]] as IR-Encoder can be found in this [[IRSND_-_english|document]].&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrared Multiprotocol Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Connection of a IR receiver module to MCU]]&lt;br /&gt;
&lt;br /&gt;
=== Supported MCUs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] has been implemented on several MCU families:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- and XC8/C18 compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (tested on STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (tested on STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEW!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several ARM-Cortex-µCs, for Example STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Officially supported µC-Series]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports More µC-Series, community supported]&lt;br /&gt;
&lt;br /&gt;
=== Supported IR Protocols ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] - the infrared remote decoder, which can decode several protocols at once, is capable of decoding the following protocols (in alphabetic order):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;supported protocols&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protocol || Vendor&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FAN|FAN]] || FAN, remote for fans&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, e.g. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]] || various european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon and other japanese vendors which are members of the  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner &#039;&#039;&#039;(NEW!)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#MERLIN|MERLIN]]  || MERLIN remote (Pollin article number: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName and many more asian vendors.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NUBERT|NUBERT]] || Nubert, e.g. Subwoofer Systems&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PANASONIC|PANASONIC]] || PANASONIC Beamer (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#PENTAX|PENTAX]] || PENTAX (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6A]] || Philips, Kathrein and others, e.g. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips and other european vendors&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCCAR|RCCAR]] || RC Car: IR remote for RC toys &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RCMM|RCMM]] || Fujitsu-Siemens e.g. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#ROOMBA|ROOMBA]] || iRobot Roomba vacuum cleaner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#S100|S100]] || similar to RC5, but 14 instead of 13 Bits and 56kHz modulation. vendor unknown.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG48|SAMSUNG48]] || various air conditions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (e.g. T-Home-Mediareceiver, MERLIN-keyboard(Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SPEAKER|SPEAKER]] || Speaker Systems like X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#VINCENT|VINCENT]] || Vincent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each of these protocols can be activated separately. If you want, you can activate all protocols. If you need only one protocol, you can disable all others. It will only be compiled the code that has been selected by the user.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] source for the AVR and PIC MCUs has been created as part of the [[Word Clock]] project.&lt;br /&gt;
&lt;br /&gt;
=== Thread in Forum ===&lt;br /&gt;
&lt;br /&gt;
Intention for an own IRMP article is the following thread in Projects&amp;amp;Code [http://www.mikrocontroller.net/topic/162119 IRMP - Infrared Multi Protocol Decoder] (in german language).&lt;br /&gt;
&lt;br /&gt;
== IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC protocol, RGB remote control, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Some vendors use their own proprietary protocol, such as Sony, Samsung and Matsuhita. Philips has developed [[IRMP_-_english#RC5 + RC5X|RC5]] and of course used for own purposes.&lt;br /&gt;
[[IRMP_-_english#RC5 + RC5X|RC5]] was seen in Europe as &#039;&#039;that&#039;&#039; standard IR-protocol which was adopted by many european vendors. Nowadays is [[IRMP_-_english#RC5 + RC5X|RC5]] nearly nowhere used - it can be ticked as &amp;quot;dead&amp;quot;. Although the successor [[IRMP_-_english#RC6_+_RC6A|RC6]] is used in actual european hardware, it is also used rarely.&lt;br /&gt;
&lt;br /&gt;
Also japanese vendors tried to establish an own standard, the so called [[IRMP_-_english#KASEIKYO|Kaseikyo]]- (or also &amp;quot;Japan-&amp;quot;) protocol. This is with a bitlength of 48 bits more versatile. But it has no general acceptance until today - even if you find it in some appliances.&lt;br /&gt;
&lt;br /&gt;
Nowadays the [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol is used (also mainly in japanese devices) - indeed in various premium and NoName products. I estimate the market share to 80 % for the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-protocol. Nearly all remotes in my daily use utilize the [[IRMP_-_english#NEC_+_extended_NEC|NEC]]-IR-Code. This starts at the TV-set, goes over the DVD-player to the Notebook remote and reaches up to NoName-Multimedaia-Harddrive, just to mention a few samples.&lt;br /&gt;
&lt;br /&gt;
== Codings ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports the following IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance|Pulse Distance]], typ. Example: [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Width|Pulse Width]], typ. Example: [[IRMP_-_english#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP_-_english#Biphase|Biphase (Manchester)]], typ. Example: Philips [[IRMP_-_english#RC5_+_RC5X|RC5]], [[IRMP_-_english#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Position|Pulse Position (NRZ)]], typ. Example: [[IRMP_-_english#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP_-_english#Pulse Distance Width|Pulse Distance Width]], typ. Example: [[IRMP_-_english#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
The pulses are modulated - usually with 36 kHz or 38 kHz - to reduce environment influences such as Indoorlightning or sunlight.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Distance Coding can be discovered by the following rule:&lt;br /&gt;
&lt;br /&gt;
* there is only &#039;&#039;&#039;one pulse length&#039;&#039;&#039; and there are &#039;&#039;&#039;two different pause lengths&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
A Pulse Width Coding can be discovered by the following rule: &lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;only one pause length&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
This is a mix from Pulse Distance and Pulse Width Coding, so:&lt;br /&gt;
&lt;br /&gt;
* there are &#039;&#039;&#039;two different pulse lengths&#039;&#039;&#039; and &#039;&#039;&#039;two different pause lengths.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
In Biphase Coding the order of pulse and pause gives the bit value.&lt;br /&gt;
Therefore a Biphase-Coding can be discovered by this criteria:&lt;br /&gt;
&lt;br /&gt;
* there is exactly &#039;&#039;&#039;one&#039;&#039;&#039; pause- and one pulse length, as well as the &#039;&#039;&#039;double&#039;&#039;&#039; pulse/pause length&lt;br /&gt;
&lt;br /&gt;
Usually the length for the pulse and pause are equal, that means the signal shape is symmetric. But IRMP knows also protocols which use different puls/pause lengths. This case is for example the [[IRMP_-_english#A1TVBOX|A1TVBOX]]-protocol.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
The pulse position coding is known from usual UART&#039;s. Every bit has a fixed length here. Depending on the value (0 or 1), it is a pulse or a pause.&lt;br /&gt;
&lt;br /&gt;
Typical criteria for a &#039;&#039;&#039;pulse position protocol&#039;&#039;&#039; is:&lt;br /&gt;
* there are &#039;&#039;&#039;multiples&#039;&#039;&#039; of a basic pulse/pause length&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A tabular listing of different IR-protocols can be found here: [[IRMP_-_english#IR_Protocols_in_Detail|IR Protocols in Detail]].&#039;&#039;&#039;&lt;br /&gt;
The specified timings are typical values. In some remotes they differ up to 40 % in real life. Therefore [[IRMP_-_english#top|IRMP]] uses minimum/maximum limits to be tolerant with the timing.&lt;br /&gt;
&lt;br /&gt;
== Protocol Detection ==&lt;br /&gt;
&lt;br /&gt;
The most of the [[IRMP_-_english#top|IRMP]] decoded protocols have something in common: they show a start bit which is unique for their timing.&lt;br /&gt;
&lt;br /&gt;
According to this start bit timing the most protocols are discriminated. [[IRMP_-_english#top|IRMP]] measures the timing of the start bit and reorders its timing tables &amp;quot;on-the-fly&amp;quot; for the discovered protocol. So the following bits can be read sequential without the need of storing a complete frame.&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] does not wait for reading a complete frame to analyze, it starts decoding after the first pulse detection.&lt;br /&gt;
&lt;br /&gt;
If the first read start bit is not unique, [[IRMP_-_english#top|IRMP]] follows multiple possible protocols. If for plausible reasons one protocol is no more possible this track will be dropped.&lt;br /&gt;
&lt;br /&gt;
The detection is implemented as a [[Statemachine|state machine]], which is called interrupt driven with an frequency of typically 15.000 per second. the [[Statemachine|state machine]] knows the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the first pulse length of the start bit&lt;br /&gt;
* detect the pause length of the start bit&lt;br /&gt;
* detect the pulse length of the first data bit&lt;br /&gt;
&lt;br /&gt;
After that, the pulse/pause length of the start bit are known. Now all enabled protocols are searched for this length. If a protocol matches, the timing table for this protocol is loaded and the following bits are checked if the pulse/pause timing still fit to the limis.&lt;br /&gt;
&lt;br /&gt;
So the [[Statemachine|state machine]] continues with the following states:&lt;br /&gt;
&lt;br /&gt;
* detect the pauses of the data bits&lt;br /&gt;
* detect the pulse length of the data bits&lt;br /&gt;
* check timing. If different, switch back to another valid IR protocol, otherwise return&lt;br /&gt;
* detect the sop bit if present in the protocol&lt;br /&gt;
* check data for plausibility, like CRC or other redundant data bits&lt;br /&gt;
* convert data to device address and command&lt;br /&gt;
* detect code repetition by long key press, set according flag&lt;br /&gt;
&lt;br /&gt;
Indeed the [[Statemachine|state machine]] is even more complex because some protocols have no start bit (e.g. [[IRMP_-_english#DENON|Denon]]) or have multiple start bits (4 in [[IRMP_-_english#B.26O|B&amp;amp;O]]) or have within the frame another sync bit (z.B. [[IRMP_-_english#SAMSUNG|Samsung]]). These extra conditions are caught in the code by protocol specific &amp;quot;special cases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Switching to an other protocol can happen multiple times during receiving of a frame, f.e. from [[IRMP_-_english#NEC42|NEC42]] (42 Bit) to [[IRMP_-_english#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), when a premature sync bit was detected. Or from [[IRMP_-_english#NEC + extended NEC|NEC]]/[[IRMP_-_english#NEC42|NEC42]] (32/42 Bit) to [[IRMP_-_english#JVC|JVC]] (16 Bit) when the stop bit premature occured. It is getting difficult when two possible protocols after the detection of the start bit use different codings, e.g. when the one protocol uses a [[IRMP_-_english#Pulse Distance|Pulse Distance Coding]] and the other uses a [[IRMP_-_english#Biphase|Biphase Coding (Manchester)]]. In this case [[IRMP_-_english#top|IRMP]] stores the necessary bits for both codings and releases later the one or the other.&lt;br /&gt;
&lt;br /&gt;
Furthermore some remotes are transmitting in particular protocols for redundance reasons (error detection) or for long key presses repetition frames. These will be discriminated by IRMP: the necessary frames for error detection are checked by IRMP, but not passed to the application. The other will be detected as long key press and flagged by IRMP.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9, Date: 2018-02-19&lt;br /&gt;
&lt;br /&gt;
Download of stable version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] &amp;amp; [[IRSND_-_english|IRSND]] is also available by SVN: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP in SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP on GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The version in the SVN can be a newer version than the stable version stored in Irmp.zip. In doubt, use the download link of Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see the history of the software changes here: [[IRMP_-_english#Software_History|Software History]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The source code can be easily compiled for AVR MCUs by loading the project file irmp.aps in AVR Studio 4.&lt;br /&gt;
&lt;br /&gt;
For other development environments it is simple to create a project or makefile. The source includes:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - IR-decoder core&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - all protocoll definitions&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - target independant definitions for AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include file for the application&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - user configuration&lt;br /&gt;
&lt;br /&gt;
Sample applications (main functions and timer configurations):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR with output on UART&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;Important: include only irmp.h to your application:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other include files are included within irmp.h. See also the sample application irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the preprocessor constant &#039;&#039;&#039;F_CPU in project or makefile&#039;&#039;&#039; must be defined. This should have at least the value of 8000000UL, processor speed should be at least 8 MHz. This applies to AVR targets and not for MCUs with PLL. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] is also running on PIC processors. For the PIC-CCS compiler are already the necessary preprocessor defines set, so that [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be directly used in the CCS environment. Only a short interrupt service routine like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
must be added. The Interrupt period time must be set to 66 µs (15 kHz).&lt;br /&gt;
&lt;br /&gt;
For AVR processors you will find an example for the usage of [[IRMP_-_english#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. The main things are the [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]] initializing of the timer and the processing of received IR commands. The received protocoll, the device address and the command will be output on the HW-UART.&lt;br /&gt;
&lt;br /&gt;
For the Stellaris LM4F120 Launchpad from TI (ARM Cortex M4) is a propriate timer init function already integrated in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used also with STM32 microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Another new implementation is available on the mbed platform.&lt;br /&gt;
=== avr-gcc Optimizations ===&lt;br /&gt;
&lt;br /&gt;
From version avr-gcc 4.7.x the option [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] can be used to make the call of the external function irmp_ISR() from the main ISR more efficent. This improves the performance of the ISR a little.&lt;br /&gt;
&lt;br /&gt;
Add the following compiler- and linker options:&lt;br /&gt;
&lt;br /&gt;
* additional compiler option: -flto&lt;br /&gt;
* additional linker options: -flto -Os&lt;br /&gt;
&lt;br /&gt;
If you forget the additional linker option -Os, the binary will be significant larger as it will no be optimized further. Also the option -flto must be passed to the linker, otherwise the link time optimization will not work.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration of [[IRMP_-_english#top|IRMP]] is done by settings in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] :&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#F_INTERRUPTS|number of interrupts per second]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_SUPPORT_xxx_PROTOCOL|supported IR protocols]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|hardware pin for IR receiver]]&lt;br /&gt;
* [[IRMP_-_english#IRMP_LOGGING|IR logging]]&lt;br /&gt;
&lt;br /&gt;
=== Adjustments in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] will decode all protocols listed above in one ISR. For this, there are some settings necessary. These are set in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h].&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Number of interrupts per second. Should be set to a value from 10000 to 20000. The higher the value, the better the resolution and therefore the quality of detection. But a higher interrupt rate means also higher CPU load. The value of 15000 is in most cases a good compromise.&lt;br /&gt;
&lt;br /&gt;
Standardvalues:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On AVR controllers is a timer1 with 16 bit resolution used in the example [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c]. If for any reasons timer1 is not available, you can also use timer2 with 8 bit resolution.&lt;br /&gt;
&lt;br /&gt;
In this case timer2 will be configured as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example is valid for ATmega88/ATmega168/ATmega328. For other AVR MCUs check the datasheet.&lt;br /&gt;
&lt;br /&gt;
You must not forget to adjust the ISR for timer2 as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Here you can select which protocols should be supported by [[IRMP_-_english#top|IRMP]]. Standardprotocols are activated by default.&lt;br /&gt;
&lt;br /&gt;
Would you like to turn on more protocols or turn off some other for memory saving reasons, then the corresponding values in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] must be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each [[IRMP_-_english#top|IRMP]] supported IR protocol consumes the noted amount of code. Here you can apply optimizations: for example the modulation frequency of 455 kHz for the [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol is far away from the frequencies that are used by other protocols. Maybe you need a different IR receiver, otherwise you could disable these protocols. For example you cannot receive a [[IRMP_-_english#B&amp;amp;O|B&amp;amp;O]] protocol (455kHz) with a TSOP1738 / TSOP 31238.&lt;br /&gt;
&lt;br /&gt;
Furthermore the protocols [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP_-_english#FDC|FDC]]/[[IRMP_-_english#RCCAR|RCCAR]] are only reliable detected at a frequency starting at 15 kHz. For [[IRMP_-_english#LEGO|LEGO]] it is even 20 kHz. When you want to use these protocols, you must adjust [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]]. Otherwise, during compilation you will get a warning and the corresponding protocols are automatically disabled.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
This constant defines the pin where the IR receiver is connected.&lt;br /&gt;
&lt;br /&gt;
Default value is PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two values must match your hardware configuration.&lt;br /&gt;
&lt;br /&gt;
This applies also to STM32 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the corresponding section for STM8 MCUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PIC controllers there is only the define for &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - depending on compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you turn on callbacks, on any level change at the input the callback function is called. This could be use to visualize incoming IR signals by driving another output pin.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
With IRMP_LOGGING the logging of received IR frames can be turned on.&lt;br /&gt;
&lt;br /&gt;
Default value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation can be found here: [[IRMP_-_english#Scanning_of_unknown_IR_Protocols|Scanning of unknown IR Protocols]].&lt;br /&gt;
&lt;br /&gt;
=== IRMP in Practice ===&lt;br /&gt;
&lt;br /&gt;
The [[IRMP_-_english#top|IRMP]] supported protocols use partly variable, partly fixed bit length from 2 up to 48 bits. These will be described by preprocessor defines.&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] separates these IR frames always into 3 sections:&lt;br /&gt;
&lt;br /&gt;
 1. protocol ID&lt;br /&gt;
 2. address or vendorcode&lt;br /&gt;
 3. command&lt;br /&gt;
&lt;br /&gt;
with this function&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
you can recall a decoded message. The return value is 1 when a message has been received, otherwise it is 0. In the first case the struct members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contain valid information.&lt;br /&gt;
&lt;br /&gt;
That means: finally you&#039;ll get simply three values (protocol, address and command) that can be checked with an if or switch statement. &lt;br /&gt;
Here is a sample decoder which checks for key 1-9 on a remote:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are possible constants for irmp_data.protocol, see also [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values of address and the command code of an unknown remote can be received and printed over UART or LCD. Then these values can be used hard coded in your decoder routine. Or you write a teaching routine, where you need to press a key once to store the code in an EEPROM. A sample for this can be found in [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Another [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup example main function] is included in the zip file, showing also the timer initialization.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Debouncing&amp;quot; of Keys ===&lt;br /&gt;
&lt;br /&gt;
To distinguish between long key press or a single press, the bit mask IRMP_FLAG_REPETITION exists. This will be set in struct member &#039;&#039;&#039;flags&#039;&#039;&#039; when a key on the remote is pressed for longer time and therefore the same command is repeated in short periods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // long key press&lt;br /&gt;
      // either:&lt;br /&gt;
      //   ignore the (repeated) key&lt;br /&gt;
      // or:&lt;br /&gt;
      //   use this information for a repeat function&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // key was pressed again&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be used to &amp;quot;debounce&amp;quot; the keys 0-9 by ignoring commands with bit IRMP_FLAG_REPETITION set. For keys like &#039; VOLUME+&#039; or &#039;VOLUME-&#039; using the repetition could be useful, maybe to [[LED-Fading|fade a LED]].&lt;br /&gt;
&lt;br /&gt;
If you want to decode only singe keys, you can reduce the block above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Its a new key&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mode of Operation ==&lt;br /&gt;
&lt;br /&gt;
The  &amp;quot;Working Horse&amp;quot; of [[IRMP_-_english#top|IRMP]] is the interrupt service routine irmp_ISR() which should be called 15000 times per second. Is this rate different, the constant [[IRMP_-_english#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] needs to be adjusted.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detects first the length and the form of the startbit(s) and determines the used protocols by this information. As soon as the protocol was identified, the further bits are parameterized to read the following bits most efficient until the IR command is complete.&lt;br /&gt;
&lt;br /&gt;
Just to stop slashers:&lt;br /&gt;
&lt;br /&gt;
I know that the ISR is quite large. But as it acts as a state machine, the effective executed code per cycle is relative small. While it is &amp;quot;dark&amp;quot; (and that is the case for the most time ;-)) the spent time is vanishing short. In the WordClock project for example are called 8 ISR&#039;s with the same timer, there is irmp_ISR() only one amongst many others. For at least 8 MHz CPU clock no timing problems occured. Therefor I see really no problem in the length of the ISR.&lt;br /&gt;
&lt;br /&gt;
A crystal is not a neccessary must, it works well with the internal AVR oscillator. Remember to set the correct fuses for the CPU to run at 8 MHz, check [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] for correct values for an ATMEGA88.&lt;br /&gt;
&lt;br /&gt;
== Scanning of unknown IR Protocols ==&lt;br /&gt;
&lt;br /&gt;
Changing in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the value for [[IRMP_-_english#IRMP_LOGGING|IRMP_LOGGING]] to 1, then a logging in [[IRMP_-_english#top|IRMP]] will be turned on: the bright- and darkphases will be sent via UART with 9600 bit/s: 1=dark, 0=bright. Maybe the constans in the functions uart_init() and uart_putc() must be adjusted, this depends on the used AVR MCU.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remark: for PIC-processors there is an own logging module named [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. This makes it possible to log via USB. This applies not to the AVR version&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you record these protocol scans with a terminal program and save them as a textfile, you can use these files for analyzing the frames in ordner to add a yet unknown protocol to [[IRMP_-_english#top|IRMP]] - see next chapter.&lt;br /&gt;
&lt;br /&gt;
If you have a remote control that is not supported by [[IRMP_-_english#top|IRMP]] you can send me ([http://www.mikrocontroller.net/user/show/ukw ukw]) the scan files. Then I can check if the protocol fits into the IRMP concepts and adapt the sources if applicable.&lt;br /&gt;
&lt;br /&gt;
== IRMP under Linux and Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] can be compiled under Linux for testing IR scans in textfiles. In the subdirectory &#039;IR-Data&#039; you will find such files that you can use as input files for [[IRMP_-_english#top|IRMP]].&lt;br /&gt;
&lt;br /&gt;
The compilation of [[IRMP_-_english#top|IRMP]] is started by:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
This will generate 3 IRMP versions:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version for 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version for 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version for 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Starting IRMP ===&lt;br /&gt;
&lt;br /&gt;
The calling syntax is:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
The given options are exclusive, that means only one option per call is valid:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             print a list with pulses and pauses&lt;br /&gt;
   -a analyze           analyse the puls/pauses and write a &amp;quot;spectrum&amp;quot; in ASCII format&lt;br /&gt;
   -v verbose           verbose output&lt;br /&gt;
   -p  Print Timings    print a timing table for all protocols&lt;br /&gt;
&lt;br /&gt;
Samples:&lt;br /&gt;
&lt;br /&gt;
=== Normal Output ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Output Lists ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analysing ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you see the measured times of all pulses and pauses as (horizontal) bell shaped curves, which of course are not quite ideal displayed due to the ASCII formatting. The smaller the measured channels, the better is the timing of the remote.&lt;br /&gt;
&lt;br /&gt;
The above output can be read as:&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pulse length between 9000 and 9200 µs, in average 9102 µs. The deviation from this average is about 1.1 %&lt;br /&gt;
&lt;br /&gt;
* the start bit has a pause length between 4300 and 4500 µs, the average is 4424 µs. The error is about 2.8 %.&lt;br /&gt;
&lt;br /&gt;
* the pulse length of a databit is between 500 and 700 µs, in average 650 µs, the error is (quite large!) 23.1 %&lt;br /&gt;
&lt;br /&gt;
Further there are two more pauses with different length (for bits 0 and 1). Checking this I leave to the willing reader ;-)&lt;br /&gt;
&lt;br /&gt;
=== Verbose Output ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting under Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] can be used as well under Windows, like:&lt;br /&gt;
&lt;br /&gt;
* start command line console&lt;br /&gt;
* change to directory &#039;irmp&#039;&lt;br /&gt;
* enter:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
The same options apply as for the Linux version.&lt;br /&gt;
&lt;br /&gt;
=== Long Outputs ===&lt;br /&gt;
&lt;br /&gt;
As some outputs are pretty large, it is recommended to redirect the output to a file or filter for paging:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Remote Controls ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protocol || Name || Device || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP_-_english#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]] supports more and more also camera remotes like:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
The command variety isn&#039;t really large. Usually the cameras understand only the command:&lt;br /&gt;
&amp;quot;Trigger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is a short table for [[IRMP_-_english#PENTAX|PENTAX]] cameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Command || Function&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Trigger&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || change Zoomlevel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because there is no address designated in the [[IRMP_-_english#PENTAX|PENTAX]]-protocol, this should be set for sending in [[IRSND_-_english|IRSND]] to 0x0000. You should also use a crystal in this case because especially the Nikons are very fussy regarding the timing.&lt;br /&gt;
&lt;br /&gt;
== IR Keyboards ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP_-_english#top|IRMP]]  supports from version 1.7.0 also IR keyboards, namely the FDC-3402 &amp;lt;s&amp;gt; from www.pollin.de (partno. 711 056) for less than 2 Euro.&amp;lt;/s&amp;gt; (not available as of 19.09.2017 )&lt;br /&gt;
&lt;br /&gt;
On detection of a key press the following data is returned:&lt;br /&gt;
&lt;br /&gt;
 Protocol-Number  (irmp_data.protocol): 18&lt;br /&gt;
 Address          (irmp_data.address) : 0x003F&lt;br /&gt;
&lt;br /&gt;
As command (irmp_data.command) the following values are returned:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   || Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special keys left side:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Key   &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above values are for pressing a key. On release,  [[IRMP_-_english#top|IRMP]] sets also Bit 8 (0x80) in the command.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F&lt;br /&gt;
&lt;br /&gt;
Exception for the ON / OFF key: This one sends only for key press a code, not for release.&lt;br /&gt;
&lt;br /&gt;
Is a key pressed for a longer time, it will be notified in irmp_data.flag&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x00&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      Key &#039;a&#039; pressed:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Key &#039;a&#039; released:  0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When key combinations (like a capital &#039;A&#039;) are pressed, then the return values are a sequence like this:&lt;br /&gt;
&lt;br /&gt;
      Left SHIFT-key pressed:    0x0002&lt;br /&gt;
      Key &#039;a&#039; pressed:           0x001F&lt;br /&gt;
      Key &#039;a&#039; released:          0x009F&lt;br /&gt;
      Left SHIFT-key released:   0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] you will find a function get_fdc_key() for the Linux version, which can be used as a template to convert the FDC keycodes into the corresponding ASCII codes. This function can be used either local on the MCU to decode the keycodes, or on the hostsystem (e.g. PC) where the IRMP data structure is sent to. Therefore the function incl. preprocessor constands should be copied to your application code.&lt;br /&gt;
&lt;br /&gt;
Here is an excerpt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
 &lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And at least an example for the usage of function get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All non-printable characters are coded as:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Key               || Constant                || Value&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menu              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Back              || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Forward           || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adress            || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Window            || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Page           || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| New Page          || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Font              || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Print             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| On/Off            || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Insert            || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Delete            || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| End               || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor right      || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor down       || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Page up           || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Page down         || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor left       || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Left Mousebutton  || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Right Mousebutton || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The function get_fdc_key() considers the holding of key pressed of Shift-, Ctrl- and ALT. For this reason not only the writing of capital letters works, but also the selection of special characters with the key combination ALT + key, e.g. ALT + m -&amp;gt; µ or ALT + q -&amp;gt; @. Also you can send CTRL-A to CTRL-Z by using the Ctrl key. The Caps Lock key is ignored, as I regard this key as the most unnecessary key at all ;-)&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
&lt;br /&gt;
== IR Protocols in Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC Protocol|NEC + extended NEC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data NEC || 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data ext. NEC || 16 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 9000µs pulse, 2250µs pause, 560µs pulse, ~100ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#NEC16 Protocol (JVC)|JVC]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 12 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause, 6000µs pause if keyboard repetition&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 8 address bits + 1 sync bit + 8 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 560µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 42 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 address bits + 13 inverted address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 110ms (beginning from start bit), 9000µs pulse, 2250µs pause, 560µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#ACP24 Protocol|ACP24]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 70 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 70 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 390µs pulse, 950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 390µs pulse,  950µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 390µs pulse, 13000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 390µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LGAIR Protocol|LGAIR]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 28 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 16 command bits + 4 checksum bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 9000µs pulse, 4500µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 560µs pulse,  560µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 560µs pulse, 1690µs pause (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 560µs pulse (identical with [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first (&#039;&#039;&#039;differing&#039;&#039;&#039; to [[IRMP_-_english#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SAMSUNG Protocol|SAMSUNG]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data(1) bits + 1 sync bit + 20 data(2)-bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data(1) || 16 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data(2) || 4 ID bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| sync bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || repetition after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || Repetition after approx. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 32 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 8 Bits + 8 inverted Bits + 8 Bits + 8 inverted Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 4500µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1650µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || one after approx. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 45 msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#MATSUHITA Protocol|MATSUSHITA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 customer bits + 6 command bits + 12 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance, Timing identisch mit [[IRMP_-_english#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 22 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 11 command bits + 11 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3488µs pulse, 3488µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 872µs pulse,  872µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 872µs pulse, 2616µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 872µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#KASEIKYO_Protocol_.28.22Japan Protocol.22.29|KASEIKYO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 48 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 customer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 ID bits + 8 parity bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3380µs pulse, 1690µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 423µs pulse,  423µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 423µs pulse, 1269µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 423µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 80ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start Bits + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 3 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RECS80 and RECS80 Extended Protocol|RECS80EXT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 toggle bit + 4 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 3637µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse, 4902µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 7432µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Denon Protocol|DENON]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (in practice, theoretically: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 5 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Command || 6 data bits + 2 extension bits + 2 data construction bits (normal: 00, inverted: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || no Start Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse, 775µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 310µs pulse, 1780µs pause (in practice, theoretically: 275µs pulse, 1900µs pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 310µs pulse (310µs pulse, 745µs pause (in practice, theoretically: 275µs pulse)&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || after 65ms with inverted command bits (data construction bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || both frames after 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 11100000 + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || see [[IRMP_-_english#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1060µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  437µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 start bits + 16 data bits + 1 trailer bit + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 1 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 2 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 3 || 200µs pulse, 15425µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit 4 || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 200µs pulse, 2925µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 200µs pulse, 9175µs pause&lt;br /&gt;
|-&lt;br /&gt;
| R Bit || 200µs pulse, 6050µs pause, repeats the last bit&lt;br /&gt;
|-&lt;br /&gt;
| Trailer Bit || 200µs pulse, 12300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 200µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 40 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 12 x 0 Bits + 4 press/release bits + 8 command bits + 8 inverted command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2085µs pulse, 966µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 300µs pulse,  220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 300µs pulse, 715µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 300µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Press Key || press/release bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Release Key || press/release bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after pause of approx. 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 2 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 2 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse,  1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 3500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 56 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 24 bits (010000000000010000000001) + 16 address bits + 16 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 3600µs pulse, 1600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 565µs pulse,  316µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 565µs pulse, 1140µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 565µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 6 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2200µs pulse, 27100µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 1000µs pulse,  1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1000µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 1000µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 210µs pulse, 6218µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pulse,  1400µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 3000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 12 command bits + 4 crc bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 158µs pulse, 1026µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 158µs pulse,  263µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 158µs pulse, 553µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 158µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#VINCENT|VINCENT]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 16 address bits + 8 command bits + 8 repeated command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2500µs pulse, 4600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 1540µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start Bits + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 4 address bits + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 550µs pulse,  2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 550µs pulse, 4500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 550µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 15 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 1500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 13 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 2000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse,  900µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 600µs pulse, 450µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 600µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RCMM_Protocol|RCMM]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 start bit + 32 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 start bit + 24 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 start bit + 12 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM32 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM24 || 16 address bits (= 4 mode bits + 12 device bits) + 1 toggle bit + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RCMM12 || 4 address bits (= 2 mode bits + 2 device bits) + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 500µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 00 Bits || 230µs pulse, 220µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 01 Bits || 230µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 10 Bits || 230µs pulse, 550µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 11 Bits || 230µs pulse, 720µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 230µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#SIRCS_Protocol|SIRCS]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequency ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 12-20 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 7 command bits + 5 address bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 600µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1200µs pulse, 600µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || twice after approx. 25ms, that means: 2nd und 3rd Frame&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || starting with 4th identical frame, distance approx. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse distance Width Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pulse, 1300µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1340µs pulse, 340µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th etc. indentical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
This protocol is very similar to [[IRMP_-_english#NUBERT|NUBERT]], but here it will be sent only one frame. Additionally there are 11 instead of 10 data bits and no stop bit. The pause time between frame repetitions is substantial lower.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 11 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 11 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 380µs pulse, 1280µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1280µs pulse, 380µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after 6,6ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 10 data bits + 1 stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 10 command bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 440µs pulse, 1250µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 1250µs pulse, 440µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || 440µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once after approx. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || 3rd, 5th, 7th ... identical frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 7 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 930µs pulse, 2790µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 2790µs pulse, 930µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 3 times after 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protocols ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC5 and RC5x Protocol|RC5 + RC5X]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start Bits + 12 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5 || 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 start bit + 13 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data RC5X || 1 inverteds command bit + 1 toggle bit + 5 address bits + 6 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 data bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 14 data bits + 0 Stop Bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 1 inverteds command bit + 1 toggle bit + 5 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#RC6 and RC6A Protocol|RC6 + RC6A]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (000) + 1 toggle bit + 16 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 start bit + 1 Bit &amp;quot;1&amp;quot; + 3 mode bits (110) + 1 toggle bit + 31 data bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6 || 8 address bits + 8 Command Bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A || &amp;quot;1&amp;quot; + 14 customer bits + 8 system bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Data RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 mode bits (&amp;quot;110&amp;quot;) + 1 toggle bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 toggle(!) + 15 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2666µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0 Bit || 889µs pause, 889µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1 Bit || 889µs pulse, 889µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 444µs pause, 444µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 444µs pulse, 444µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#Grundig Protocol|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms pause + N Info-Frames + 117,76ms pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 pre bit + 1 start bit + 9 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 pre bit + 1 start bit + 9 data bits (all 1) + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Grundig || 9 command bits + 0 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Nokia || 8 command bits + 8 address bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP_-_english#IR60_.28SDA2008_and_MC14497P.29|IR60]]&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 start bit + 101111 + 0 stop bits + 22ms pause&lt;br /&gt;
|-&lt;br /&gt;
| Data Frame || 1 start bit + 7 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 0 address bits + 7 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 528µs pulse, 2639µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 528µs pause, 528µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 528µs pulse, 528µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 36 kHz? (Merlin-Tastatur mit Ruwido protocol: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 start bit + 22 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 start bit + 17 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data Siemens || 11 address bits + 10 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Data Ruwido || 9 address bits + 7 command bits + 1 inverteds Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 275µs pause, 275µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 275µs pulse, 275µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || once with repeat bit set (?)&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 16 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 8 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 250µs pulse, 150µs + 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 150µs pause, 250µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 250µs pulse, 150µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) asymmetric&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 8 address bits + 10 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bits || &amp;quot;10&amp;quot;, also 210µs pulse, 210µs + 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 210µs pause, 210µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 210µs pulse, 210µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || unknown&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start Bits + 18 data bits + 0 stop bits&lt;br /&gt;
|-&lt;br /&gt;
| Data || 6 address bits + 2 special bits +  6 command bits + 4 special bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2000µs pulse, 1000µs pause&lt;br /&gt;
|-&lt;br /&gt;
| 0 Bit || 500µs pause, 500µs pulse&lt;br /&gt;
|-&lt;br /&gt;
| 1 Bit || 500µs pulse, 500µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop Bit || no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || 2 additinal frames with special bits set&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || only repetition of the 2nd frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protocols ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Value&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequency || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Coding || pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 start bit + 16 data bits, no stop bit&lt;br /&gt;
|-&lt;br /&gt;
| Data || 3 address bits + 13 command bits&lt;br /&gt;
|-&lt;br /&gt;
| Start Bit || 2400µs pulse, 800µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit Length || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Repetition || none&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard Repetition || after approx. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes of IRMP in 3.0.x ===&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 2018-02-19: corrected handling of irmp_flags for invalid frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 2017-08-25: New protocol: IRMP16 for transparent 16 bit data communication&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 2016-11-18: Corrected buffer overflow in irmp-main-avr-uart.c&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-19: New protocol [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 2016-09-09: New protocol [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (air conditioner)]]&lt;br /&gt;
* 2016-09-09: Some modifications for Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 2016-01-16: Some corrections of port to ESP8266&lt;br /&gt;
* 2016-01-16: Added port to MBED&lt;br /&gt;
* 2016-01-16: Added several hardware dependent example main source files&lt;br /&gt;
&lt;br /&gt;
=== Older Versions ===&lt;br /&gt;
&lt;br /&gt;
* 2015-11-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 2015-11-17: Port to ESP8266&lt;br /&gt;
* 2015-11-17: Port to Teensy (3.x)&lt;br /&gt;
* 2015-11-10: Added support for STM8 microcontroller&lt;br /&gt;
* 2015-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TECHNICS|TECHNICS]]&lt;br /&gt;
* 2015-06-15: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ACP24|ACP24]]&lt;br /&gt;
* 2015-05-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#S100|S100]]&lt;br /&gt;
* 2015-05-29: Some smaller corrections&lt;br /&gt;
* 2015-05-28: Added Logging for XMega&lt;br /&gt;
* 2015-05-28: Timing corrections  for FAN protocol&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#MERLIN|MERLIN]]&lt;br /&gt;
* 2015-05-27: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FAN|FAN]]&lt;br /&gt;
* 2015-05-18: Added F_CPU macro for STM32L1XX&lt;br /&gt;
* 2015-05-18: Some corrections for XMega port&lt;br /&gt;
* 2015-04-23: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#PENTAX|PENTAX]]&lt;br /&gt;
* 2015-04-23: Port to AVR XMega&lt;br /&gt;
* 2014-09-19: Bugfix: added missing newline before #else&lt;br /&gt;
* 2014-09-18: Added logging for ARM STM32F10X&lt;br /&gt;
* 2014-09-17: Corrected PROGMEM access to array irmp_protocol_names[].&lt;br /&gt;
* 2014-09-15: Changed timing tolerances for [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol&lt;br /&gt;
* 2014-09-15: Moved  irmp_protocol_names to flash, additional UART routines in irmp-main-avr-uart.c&lt;br /&gt;
* 2014-07-21: Port to PIC 12F1840&lt;br /&gt;
* 2014-07-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 2014-07-09: Some small corrections&lt;br /&gt;
* 2014-07-01: Added logging for ARM_STM32F4XX&lt;br /&gt;
* 2014-07-01: IRMP port for PIC XC8 compiler, removed variadic macros because of stupid XC8 compiler :-(&lt;br /&gt;
* 2014-06-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LGAIR|LGAIR]]&lt;br /&gt;
* 2014-05-30: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SPEAKER|SPEAKER]]&lt;br /&gt;
* 2014-05-30: Optimized timings for [[IRMP_-_english#SAMSUNG|SAMSUNG]] protocol&lt;br /&gt;
* 2014-02-20: Corrected decoding of [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2014-02-19: &#039;&#039;&#039;New protocols&#039;&#039;&#039;: [[IRMP_-_english#RCMM|RCMM32, RCMM24 and RCMM12]]&lt;br /&gt;
* 2014-09-17: Optimized timing for [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ROOMBA|ROOMBA]]&lt;br /&gt;
* 2013-04-09: Optimized detection of [[IRMP_-_english#ORTEK|ORTEK (Hama)]] frames&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 2013-03-19: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 2013-03-12: Changed timing tolerancies for [[IRMP_-_english#RECS80|RECS80]]- and  [[IRMP_-_english#RECS80EXT|RECS80EXT]] protocol&lt;br /&gt;
* 2013-01-21: Corrected detection of repetition frame beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2013-01-17: Corrected frame detection beim [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-12-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 2012-12-07: Improved detection von [[IRMP_-_english#DENON|DENON]] repetition frame&lt;br /&gt;
* 2012-11-19: Port to Stellaris LM4F120 TI Launchpad (ARM Cortex M4)&lt;br /&gt;
* 2012-11-06: Corrected [[IRMP_-_english#DENON|DENON]] frame detection&lt;br /&gt;
* 2012-10-26: Some timer corrections and adaptations for Arduino&lt;br /&gt;
* 2012-07-11: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#BOSE|BOSE]]&lt;br /&gt;
* 2012-06-18: Added support for ATtiny87/167&lt;br /&gt;
* 2012-06-05: Some smaller corrections of port to ARM STM32&lt;br /&gt;
* 2012-06-05: Correction of include in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 2012-06-05: Bugfix, if only [[IRMP_-_english#NEC_+_extended_NEC|NEC]] and [[IRMP_-_english#NEC42|NEC42]] activated&lt;br /&gt;
* 2012-05-23: Port to ARM STM32&lt;br /&gt;
* 2012-05-23: Bugfix frame detection for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2012-02-27: Bugfix in IR60-Decoder&lt;br /&gt;
* 2012-02-27: Bugfix in CRC calculation of  [[IRMP_-_english#KASEIKYO|KASEIKYO]] frames&lt;br /&gt;
* 2012-02-27: Port to C18 Compiler for PIC microcontrollers&lt;br /&gt;
* 2012-02-13: Bugfix: most significant bit in Address wrong in [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol, if [[IRMP_-_english#NEC42|NEC42]] protocol activated, too&lt;br /&gt;
* 2012-02-13: Corrected timing of [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol&lt;br /&gt;
* 2012-02-13: [[IRMP_-_english#KASEIKYO|KASEIKYO]]: Genre2 bits will be now stored in upper nibble of flags&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#KATHREIN|KATHREIN]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#THOMSON|THOMSON]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#LEGO|LEGO]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC16|NEC16]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NEC42|NEC42]]&lt;br /&gt;
* 2011-09-20: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NETBOX|NETBOX]]&lt;br /&gt;
* 2011-09-20: Port to ATtiny84 and ATtiny85&lt;br /&gt;
* 2011-09-20: Improved key repetition detection in [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
* 2011-09-20: Improved decoding of [[IRMP_-_english#Biphase|Biphase]] protocols&lt;br /&gt;
* 2011-09-20: Fixed some smaller bugs in [[IRMP_-_english#RECS80|RECS80]] decoder&lt;br /&gt;
* 2011-09-20: Corrected detection of additional bits in SIRCS protocol&lt;br /&gt;
* 2011-01-18: Some corrections for [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] protocol&lt;br /&gt;
* 2011-01-18: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NIKON|NIKON]]&lt;br /&gt;
* 2011-01-18: [[IRMP_-_english#SIRCS|SIRCS]]: additional bits (&amp;gt;12) will be stored in address&lt;br /&gt;
* 2011-01-18: Some timing corrections for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-09-04: Bugfix for F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 2010-09-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 2010-08-29: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#JVC|JVC]]&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: genre bits will be now stored&lt;br /&gt;
* 2010-08-29: [[IRMP_-_english#KASEIKYO|KASEIKYO]] protocol: Improved handling of repetition frames&lt;br /&gt;
* 2010-08-29: Improved support of [[IRMP_-_english#APPLE|APPLE]] protocols.&lt;br /&gt;
&lt;br /&gt;
* 2010-07-01: Bugfix: added a timeout for [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames. This avoids &#039;ghost commands&#039;.&lt;br /&gt;
&lt;br /&gt;
* 2010-06-26: Bugfix: deactivated [[IRMP_-_english#RECS80|RECS80]], [[IRMP_-_english#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] if interrupts frequency is low&lt;br /&gt;
&lt;br /&gt;
* 2010-06-25: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RCCAR|RCCAR]]&lt;br /&gt;
* 2010-06-25: Extended keyboard detection for [[IRMP_-_english#FDC|FDC]] protocol (IR keyboard)&lt;br /&gt;
* 2010-06-25: Interrupt frequency now up to 20kHz possible&lt;br /&gt;
&lt;br /&gt;
* 2010-06-09: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 2010-06-09: Corrected timing for [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-06-02: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 2010-05-26: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 2010-05-26: Bugfix: detection of long keyboard press for [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-05-17: Bugfix [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] protocol: corrected command bit mask&lt;br /&gt;
&lt;br /&gt;
* 2010-05-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 2010-05-16: Improved handling of automatic frame repetitions for [[IRMP_-_english#SIRCS|SIRCS]]-, [[IRMP_-_english#SAMSUNG32|SAMSUNG32]]-, and [[IRMP_-_english#NUBERT|NUBERT]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-04-28: Only some cosmetic code optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-04-16: Improved all timing tolerancies&lt;br /&gt;
&lt;br /&gt;
* 2010-04-12: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-29: Bugfix: detection of multiple [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
* 2010-03-29: Moved configuration data to  [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h]&lt;br /&gt;
* 2010-03-29: Introduced a program version in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 2010-03-17: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-16: Correction of RECS80 start bit timings&lt;br /&gt;
* 2010-03-16: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-15: Some optimizations&lt;br /&gt;
&lt;br /&gt;
* 2010-03-14: Port to PIC&lt;br /&gt;
&lt;br /&gt;
* 2010-03-11: Some adjustements for some ATMegas&lt;br /&gt;
&lt;br /&gt;
* 2010-03-07: Bugfix: Reset of state machine after a incomplete [[IRMP_-_english#RC5_+_RC5X|RC5]] frame&lt;br /&gt;
&lt;br /&gt;
* 2010-03-05: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#APPLE|APPLE]]&lt;br /&gt;
* 2010-03-05: Data  irmp_data.addr + irmp_data.command will be now stored in the bit order of the appropriate protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-03-04: &#039;&#039;&#039;New protocol&#039;&#039;&#039;: [[IRMP_-_english#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP_-_english#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol)&lt;br /&gt;
* 2010-03-04: Changed some timer tolerances changes of [[IRMP_-_english#SIRCS|SIRCS]]- and [[IRMP_-_english#KASEIKYO|KASEIKYO]]&lt;br /&gt;
&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: corrected detection and suppression of automatic frame repetitions&lt;br /&gt;
* 2010-03-02: [[IRMP_-_english#SIRCS|SIRCS]]: device ID bits will be now stored in irmp_data.command (not irmp_data.address anymore)&lt;br /&gt;
* 2010-03-02: Enlargement of scan buffers (for logging)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-24: New variable flags in IRMP_DATA for detection of long key press&lt;br /&gt;
&lt;br /&gt;
* 2010-02-20: Bugfix [[IRMP_-_english#DENON|DENON]] protocol: repetition frame is now basically inverted&lt;br /&gt;
&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] protocol-Varianten, z.&amp;amp;nbsp;B. [[IRMP_-_english#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 2010-02-19: Detection of [[IRMP_-_english#RC6_+_RC6A|RC6]]- and [[IRMP_-_english#DENON|DENON]] protocol&lt;br /&gt;
* 2010-02-19: Some improvements for [[IRMP_-_english#RC5_+_RC5X|RC5]] decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 2010-02-13: Bugfix: Puls/Pause counters were 1 too low, now better detection of protokols with very short pulses&lt;br /&gt;
* 2010-02-13: Improved detection of [[IRMP_-_english#NEC_+_extended_NEC|NEC]] repetition frames&lt;br /&gt;
&lt;br /&gt;
* 2010-02-12: New: [[IRMP_-_english#RC5_+_RC5X|RC5]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-02-05: Eliminated a conflict between [[IRMP_-_english#SAMSUNG|SAMSUNG]]- and [[IRMP_-_english#MATSUSHITA|MATSUSHITA]] protocol&lt;br /&gt;
&lt;br /&gt;
* 2010-01-07: First version&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
&lt;br /&gt;
=== IR Abstract ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4&lt;br /&gt;
&lt;br /&gt;
=== SIRCS Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24 Protocol ===&lt;br /&gt;
&lt;br /&gt;
The ACP24-Protocol is used by Stiebel-Eltron-Aircons&lt;br /&gt;
&lt;br /&gt;
The structure of the 70 databits is :&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
These are converted into the following 16 bits from irmp_data.command:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Meaning of the symbols:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperature + 15 degree&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 degree&lt;br /&gt;
            0100        19 degree&lt;br /&gt;
            0101        20 degree&lt;br /&gt;
            0110        21 degree&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 degree&lt;br /&gt;
&lt;br /&gt;
    N    = Nightmode&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    VV   = fan, v must be 1!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      level 1&lt;br /&gt;
            01   1      level 2&lt;br /&gt;
            10   1      level 3&lt;br /&gt;
            11   1      Automatic&lt;br /&gt;
&lt;br /&gt;
    MMM  = Mode&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      turn off&lt;br /&gt;
            001  0      turn on&lt;br /&gt;
            001  1      cooling&lt;br /&gt;
            010  1      fan&lt;br /&gt;
            011  1      demist&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatic-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           off&lt;br /&gt;
            1           on&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
To control the air con via [[IRSND_-_english|IRSND]], the following functions can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR Protocol ===&lt;br /&gt;
&lt;br /&gt;
The LG Air Con is controlled by an &#039;intelligent&#039; remote. These are the encoded data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Command                 AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16 Protocol (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG Protocol ===&lt;br /&gt;
&lt;br /&gt;
(was reverse engineered by several protocols (Daewoo or similar), so no direkt link to SAMSUNG documents is available)&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Daewoo-protocol, which uses the same principle of the sync-bits in the center of a frame, but words with different timings:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO Protocol (&amp;quot;Japan Protocol&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80 and RECS80 Extended Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5 and RC5x Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 and RC6A Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 and MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM Protocol ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Other Protocols ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP on Youtube ==&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
== Other Artikels ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Infrared sender und receiver controlled via ip network with Android smartphone as remote control:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR Tester ===&lt;br /&gt;
&lt;br /&gt;
IR tester with LCD by Klaus Leidinger:&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller-projekte.de/Mikrocontroller/index.html&lt;br /&gt;
&lt;br /&gt;
=== IR Tester with AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
IR tester for Pollin AVR-NET-IO with Pollin ADD-ON Board:&lt;br /&gt;
&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR remote receiver by Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Receiver/Sender/Switch with Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR switch based on USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo controlled IR Sender ===&lt;br /&gt;
&lt;br /&gt;
Servo controlled IR Sender (adaptive) by Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Adaptive IR Remote Control ===&lt;br /&gt;
&lt;br /&gt;
Adaptive IR remote control by Robert and Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight by Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
STM8 Moodlight by Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity Mirror LED Ceiling Lamp ===&lt;br /&gt;
&lt;br /&gt;
Infinity Mirror LED ceiling lamp with remote control by Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Cinema Control ===&lt;br /&gt;
&lt;br /&gt;
Cinema control by Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Leading-Edge Control ===&lt;br /&gt;
&lt;br /&gt;
leading-edge control:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit as coffee bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino as IR Receiver ===&lt;br /&gt;
&lt;br /&gt;
Arduino as IR Receiver:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR Volume Control with Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
volume control with Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Shutdown RaspPI with IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP under RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED strip remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, a modular Firmware for AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind solver with LED stripes and IR remote control:&lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control with ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library for STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND for STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP on STM32 - Construction Guidance ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Seminar Paper - Extension of Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Acknowledgment ==&lt;br /&gt;
&lt;br /&gt;
I thank Vlad Tepesch, Klaus Leidinger, Peter K., and Dániel Körmendi, who sent me many scan files of their IR remote controls.&lt;br /&gt;
&lt;br /&gt;
I thank Christian F. for his tipps relating to the port to PIC MCUs, gera for the port to PIC-C18 compiler, kichi (Michael K.) for the port to ARM STM32, Markus Schuster for the port to TI&#039;s Stellaris LM4F120 Launchpad (ARM Cortex M4), Matthias Frank for the port to XMega, Wolfgang S. for the port to ESP8266, Achill Hasler for the port to Teensy, Axel Schwenke for the port to STM8.&lt;br /&gt;
&lt;br /&gt;
Thanks to Dániel Körmendi, who added the LG-AIR protocol to [[IRSND_-_english|IRSND]]. Thanks to Ulrich v.d. Kammer for the Pentax protocol extension in [[IRSND_-_english|IRSND]].&lt;br /&gt;
&lt;br /&gt;
At least I will thank Jojo S. for his great job translating this documentation!&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
You can discuss IRMP &amp;amp; IRSND in the german thread [http://www.mikrocontroller.net/topic/162119 Infrared Multi Protocol Decoder].&lt;br /&gt;
&lt;br /&gt;
Have fun with IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99586</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99586"/>
		<updated>2018-08-29T14:38:43Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: ChibiOS-Port hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9, Stand vom 19.02.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei ChibiOS HAL definiert man in der Board-Config (board.chcfg) von ChibiOS einen Pin mit dem Namen &#039;&#039;&#039;IR_IN&#039;&#039;&#039; und generiert die Boarddatei neu. Wenn man einen anderen Namen für den Pin verwenden möchte, kann man auch die Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; &lt;br /&gt;
in der irmpconfig.h anpassen. Vor den Namen des Pins aus der Board-Config dann &amp;quot;LINE_&amp;quot; voranstellen, da in IRMP die &lt;br /&gt;
&amp;quot;Line&amp;quot;-Variante der PAL-Schnittstelle verwendet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
Wenn man IRMP zusammen mit ChibiOS/RT oder ChibiOS/NIL verwendet, kann man deren Event-System verwenden um einen&lt;br /&gt;
Thread aufzuwecken sobald neue IR-Daten empfangen und decodiert wurden.&lt;br /&gt;
&lt;br /&gt;
Dazu setzt man in der irmpconfig.h die Konstante &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; auf 1. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definiert den&lt;br /&gt;
Bitwert in der Event-Bitmaske, der den IRMP-Event symbolisieren soll. Mit &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; wird der&lt;br /&gt;
Variablenname des Threadpointers festgelegt, an den der Event gesendet wird.&lt;br /&gt;
&lt;br /&gt;
In der irmpconfig.h sieht das in der Praxis so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In seinem ChibiOS-Projekt verwendet man das dann so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // Daten aus irmp_data verwenden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.0.?:&lt;br /&gt;
&lt;br /&gt;
* 29.08.2018: Portierung auf ChibiOS&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99585</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99585"/>
		<updated>2018-08-29T14:35:53Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Einbinden in ChibiOS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9, Stand vom 19.02.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-chibios.c?view=markup irmp-main-chibios.c] - ChibiOS&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei ChibiOS HAL definiert man in der Board-Config (board.chcfg) von ChibiOS einen Pin mit dem Namen &#039;&#039;&#039;IR_IN&#039;&#039;&#039; und generiert die Boarddatei neu. Wenn man einen anderen Namen für den Pin verwenden möchte, kann man auch die Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; &lt;br /&gt;
in der irmpconfig.h anpassen. Vor den Namen des Pins aus der Board-Config dann &amp;quot;LINE_&amp;quot; voranstellen, da in IRMP die &lt;br /&gt;
&amp;quot;Line&amp;quot;-Variante der PAL-Schnittstelle verwendet wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ChibiOS HAL&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined(_CHIBIOS_HAL_)&lt;br /&gt;
#  define IRMP_PIN                              LINE_IR_IN              // use pin names as defined in the board config file, prefixed with &amp;quot;LINE_&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_EVENT ====&lt;br /&gt;
&lt;br /&gt;
Wenn man IRMP zusammen mit ChibiOS/RT oder ChibiOS/NIL verwendet, kann man deren Event-System verwenden um einen&lt;br /&gt;
Thread aufzuwecken sobald neue IR-Daten empfangen und decodiert wurden.&lt;br /&gt;
&lt;br /&gt;
Dazu setzt man in der irmpconfig.h die Konstante &#039;&#039;&#039;IRMP_USE_EVENT&#039;&#039;&#039; auf 1. &#039;&#039;&#039;IRMP_EVENT_BIT&#039;&#039;&#039; definiert den&lt;br /&gt;
Bitwert in der Event-Bitmaske, der den IRMP-Event symbolisieren soll. Mit &#039;&#039;&#039;IRMP_EVENT_THREAD_PTR&#039;&#039;&#039; wird der&lt;br /&gt;
Variablenname des Threadpointers festgelegt, an den der Event gesendet wird.&lt;br /&gt;
&lt;br /&gt;
In der irmpconfig.h sieht das in der Praxis so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Use ChibiOS Events to signal that valid IR data was received&lt;br /&gt;
 *---------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined(_CHIBIOS_RT_) || defined(_CHIBIOS_NIL_)&lt;br /&gt;
&lt;br /&gt;
#  ifndef IRMP_USE_EVENT&lt;br /&gt;
#    define IRMP_USE_EVENT                      1       // 1: use event. 0: do not. default is 0&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_BIT)&lt;br /&gt;
#    define IRMP_EVENT_BIT                      1                     // event flag or bit to send&lt;br /&gt;
#  endif&lt;br /&gt;
#  if IRMP_USE_EVENT == 1 &amp;amp;&amp;amp; !defined(IRMP_EVENT_THREAD_PTR)&lt;br /&gt;
#    define IRMP_EVENT_THREAD_PTR               ir_receive_thread_p   // pointer to the thread to send the event to&lt;br /&gt;
extern thread_t *IRMP_EVENT_THREAD_PTR;                               // the pointer must be defined and initialized elsewhere&lt;br /&gt;
#  endif&lt;br /&gt;
&lt;br /&gt;
#endif // _CHIBIOS_RT_ || _CHIBIOS_NIL_&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In seinem ChibiOS-Projekt verwendet man das dann so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
thread_t *ir_receive_thread_p = NULL;&lt;br /&gt;
&lt;br /&gt;
static THD_FUNCTION(IRThread, arg)&lt;br /&gt;
{&lt;br /&gt;
    ir_receive_thread_p = chThdGetSelfX();&lt;br /&gt;
    [...]&lt;br /&gt;
    while (true)&lt;br /&gt;
    {&lt;br /&gt;
        // wait for event sent from irmp_ISR&lt;br /&gt;
        chEvtWaitAnyTimeout(ALL_EVENTS,TIME_INFINITE);&lt;br /&gt;
&lt;br /&gt;
        if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
            // Daten aus irmp_data verwenden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99584</id>
		<title>IRMP</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=IRMP&amp;diff=99584"/>
		<updated>2018-08-29T14:11:22Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: ChibiOS-Port hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Von &#039;&#039;&#039;Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-title.png| |Scan eines NEC-kompatiblen Fernbedienungssignals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[IRMP_-_english#top|You will find the English documentation here.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da RC5 nicht nur veraltet, sondern mittlerweile obsolet ist und immer mehr die elektronischen Geräte der fernöstlichen Unterhaltungsindustrie in unseren Haushalten Einzug finden, ist es an der Zeit, einen IR-Decoder zu entwickeln, der ca. 90% aller bei uns im täglichen Leben zu findenden IR-Fernbedienungen &amp;quot;versteht&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Im folgenden wird IRMP als &amp;quot;Infrarot-Multiprotokoll-Decoder&amp;quot; in allen Einzelheiten vorgestellt. Das Gegenstück, nämlich &#039;&#039;&#039;[[IRSND]]&#039;&#039;&#039; als IR-Encoder, wird in einem gesonderten [[IRSND|Artikel]] behandelt.&lt;br /&gt;
&lt;br /&gt;
= IRMP - Infrarot-Multiprotokoll-Decoder =&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-empfaenger.png|miniatur|Anschluß eines IR-Empfängers an µC]]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte µCs ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] ist auf verschiedenen Mikrocontroller-Familien lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AVR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATtiny87,  ATtiny167&lt;br /&gt;
* ATtiny45,  ATtiny85&lt;br /&gt;
* ATtiny44,  ATtiny84&lt;br /&gt;
* ATmega8,   ATmega16,  ATmega32&lt;br /&gt;
* ATmega162&lt;br /&gt;
* ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284&lt;br /&gt;
* ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XMega&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ATXmega128&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PIC&#039;&#039;&#039; (CCS- und XC8/C18-Compiler)&lt;br /&gt;
&lt;br /&gt;
* PIC12F1840&lt;br /&gt;
* PIC18F4520&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM32F4xx (getestet auf STM32F401RE/F411RE Nucleo, STM32F4 Discovery)&lt;br /&gt;
* STM32F10x (getestet auf STM32F103C8T6 Mini Development Board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STM8 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* STM8S103F3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI Stellaris&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LM4F120 Launchpad (ARM Cortex M4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ESP8266 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266-EVB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TEENSY 3.0 (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* MK20DX256VLH7 (ARM Cortex-M4 72MHz)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MBED (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* LPC1347 Cortex-M3 mit 72 MHz&lt;br /&gt;
* LPC4088 (Embedded Artists)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChibiOS HAL (NEU!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Verschiedene ARM-Cortex-µCs, wie z.B. STM32, Kinetis, NRF5 etc.&lt;br /&gt;
* [https://sourceforge.net/p/chibios/svn2/HEAD/tree/trunk/os/hal/ports/ Offiziell unterstützte µC-Serien]&lt;br /&gt;
* [https://github.com/ChibiOS/ChibiOS-Contrib/tree/master/os/hal/ports weitere µC-Serien, von der Community unterstützt]&lt;br /&gt;
&lt;br /&gt;
=== Unterstützte IR-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] - der Infrarot-Fernbedienungsdecoder, der mehrere Protokolle auf einmal decodieren kann, beherrscht folgende Protokolle (in alphabetischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Unterstützte Protokolle&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%&amp;quot; | Protokoll || Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#A1TVBOX|A1TVBOX]] || ADB (Advanced Digital Broadcast), z.B. A1 TV Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ACP24|ACP24]] || Stiebel Eltron&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#B&amp;amp;O|B&amp;amp;O]] || Bang &amp;amp; Olufsen&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#BOSE|BOSE]] || Bose&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || Denon, Sharp&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FAN|FAN]] || FAN, Fernsteuerung für Ventilatoren&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#FDC|FDC]] || FDC Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]] || Grundig&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#GRUNDIG_+_NOKIA|NOKIA]] || Nokia, z.B. D-Box&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]] || Diverse europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#JVC|JVC]] || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Panasonic, Technics, Denon und andere japanische Hersteller, welche Mitglied der &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KATHREIN|KATHREIN]]  || KATHREIN&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LEGO|LEGO]]   || Lego&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#LGAIR|LGAIR]]   || LG Air Conditioner&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MITSU_HEAVY|MITSU_HEAVY]] || Mitsubishi Air Conditioner (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MATSUSHITA|MATSUSHITA]] || Matsushita&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]]  || JVC, Daewoo&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC42|NEC42]]  || JVC&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#MERLIN|MERLIN]]  || MERLIN Fernbedienung (Pollin Bestellnummer: 620 185)&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, NoName und viele weitere japanische Hersteller.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NETBOX|NETBOX]]  || Netbox&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NIKON|NIKON]] || NIKON&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NUBERT|NUBERT]] || Nubert, z.B. Subwoofer System&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ORTEK|ORTEK]] || Ortek, Hama&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PANASONIC|PANASONIC]] || PANASONIC Beamer&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#PENTAX|PENTAX]] || PENTAX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6A]] || Philips, Kathrein und andere Hersteller, z.B. XBOX&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips und andere europäische Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCCAR|RCCAR]] || RC Car: IR Fernbedienung für Modellfahrzeuge &lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80|RECS80]] || Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RECS80EXT|RECS80EXT]] || Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RCMM|RCMM]] || Fujitsu-Siemens z.B. Activy keyboard&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#ROOMBA|ROOMBA]] || iRobot Roomba Staubsauger&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#S100|S100]] || Ähnlich zu RC5, aber 14 statt 13 Bits und 56kHz Modulation. Hersteller unbekannt.&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG48|SAMSUNG48]] || Div. Klimaanlagen Hersteller&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG|SAMSUNG]] || Samsung&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]] || RUWIDO (z.B. T-Home-Mediareceiver, MERLIN-Tastatur (Pollin))&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] || Siemens, z.B. Gigaset M740AV&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SPEAKER|SPEAKER]] || Lautsprecher Systeme wie z.B. X-Tensions&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TECHNICS|TECHNICS]] || Technics&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#TELEFUNKEN|TELEFUNKEN]] || Telefunken&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#THOMSON|THOMSON]] || Thomson&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#VINCENT|VINCENT]] || Vincent &#039;&#039;&#039;(NEU)&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jedes dieser Protokolle ist einzeln aktivierbar. Wer möchte, kann alle Protokolle aktivieren. Wer nur ein Protokoll braucht, kann alle anderen deaktivieren. Es wird nur das vom Compiler übersetzt, was auch benötigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Entstehung ===&lt;br /&gt;
&lt;br /&gt;
Der auf AVR- und PIC-µCs einsetzbare Source zu [[IRMP#top|IRMP]] entstand im Rahmen des [[Word Clock]] Projektes.&lt;br /&gt;
&lt;br /&gt;
=== Thread im Forum ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anlass für einen eigenen [[IRMP#top|IRMP]]-Artikel ist folgender Thread in der Codesammlung: [http://www.mikrocontroller.net/topic/162119 Beitrag: IRMP - Infrared Multi Protocol Decoder]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IR-Protokolle ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:nec-protocol.png|miniatur|NEC-Protokoll, Reichelt RGB-LED-Fernbedienung, T-&amp;gt;A: 9,14ms, A-&amp;gt;B: 4,42ms, B-&amp;gt;C: 660us]]&lt;br /&gt;
&lt;br /&gt;
Einige Hersteller verwenden ihr eigenes hausinterne Protokoll, dazu gehören u.a. Sony, Samsung und Matsushita. Philips hat [[IRMP#RC5 + RC5X|RC5]] entwickelt und natürlich auch selbst benutzt. [[IRMP#RC5 + RC5X|RC5]] galt damals in Europa als &#039;&#039;das&#039;&#039; Standard-IR-Protokoll, welches von vielen europäischen Herstellern übernommen wurde. Mittlerweile ist [[IRMP#RC5 + RC5X|RC5]] fast gar nicht mehr anzutreffen - man kann es eigentlich als &amp;quot;ausgestorben&amp;quot; abhaken. Der Nachfolger [[IRMP#RC6_+_RC6A|RC6]] wird zwar noch in einigen aktuellen europäischen Geräten eingesetzt, ist aber auch nur vereinzelt vorzufinden.&lt;br /&gt;
&lt;br /&gt;
Auch die japanischen Hersteller haben versucht, einen eigenen Standard zu etablieren, nämlich das sog. [[IRMP#KASEIKYO|Kaseikyo]]- (oder auch &amp;quot;Japan-&amp;quot;) Protokoll. Dieses ist mit einer Bitlänge von 48 sehr universell und allgemein verwendbar. Richtig durchgesetzt hat es sich aber bis heute nicht - auch wenn man es hier und da im heimischen Haushalt vorfindet.&lt;br /&gt;
&lt;br /&gt;
Heutzutage wird (auch vornehmlich bei japanischen Geräten) das [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll verwendet - und zwar von den unterschiedlichsten (Marken- und auch Noname-)Herstellern. Ich schätze den &amp;quot;Marktanteil&amp;quot; auf ca. 80% beim [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll. Fast alle Fernbedienungen im alltäglichen Einsatz verwenden bei mir den [[IRMP#NEC_+_extended_NEC|NEC]]-IR-Code. Das fängt beim Fernseher an, geht über vom DVD-Player zur Notebook-Fernbedienung und reicht bis zur Noname-MultiMedia-Festplatte - um nur einige Beispiele zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Kodierungen ==&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt folgende IR-Codings:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#Pulse Distance|Pulse Distance]], typ. Beispiel: [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
* [[IRMP#Pulse Width|Pulse Width]], typ. Beispiel: [[IRMP#SIRCS|Sony SIRCS]]&lt;br /&gt;
* [[IRMP#Biphase|Biphase (Manchester)]], typ. Beispiel: Philips [[IRMP#RC5_+_RC5X|RC5]], [[IRMP#RC6_+_RC6A|RC6]]&lt;br /&gt;
* [[IRMP#Pulse Position|Pulse Position (NRZ)]], typ. Beispiel: [[IRMP#NETBOX|Netbox]]&lt;br /&gt;
* [[IRMP#Pulse Distance Width|Pulse Distance Width]], typ. Beispiel: [[IRMP#NUBERT|Nubert]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse werden dabei moduliert - üblicherweise mit 36kHz oder 38kHz - um Umwelteinflüsse wie Raum- oder Sonnenlicht ausfiltern zu können.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
Eine Pulse Distance Kodierung erkennt man an der folgenden Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt nur &#039;&#039;&#039;eine Pulslänge&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Pulse Width Kodierung gilt die Regel:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und nur &#039;&#039;&#039;eine Pausenlänge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Mischmasch aus Pulse Distance und Pulse Width Coding.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
&lt;br /&gt;
* es gibt &#039;&#039;&#039;zwei verschiedene Pulslängen&#039;&#039;&#039; und &#039;&#039;&#039;zwei verschiedene Pausenlängen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Biphase ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
Bei der Biphase Kodierung entscheidet die Reihenfolge von Puls und Pause über den Wert des Bits.&lt;br /&gt;
&lt;br /&gt;
Damit erkennt man ein Biphase-Coding an folgendem Kriterium:&lt;br /&gt;
&lt;br /&gt;
* es kommen genau &#039;&#039;&#039;eine&#039;&#039;&#039; Pausen- und eine Pulslänge, sowie jeweils die &#039;&#039;&#039;doppelten&#039;&#039;&#039; Puls-/Pausenlängen vor&lt;br /&gt;
&lt;br /&gt;
Normalerweise sind die Längen für die Pulse und Pausen gleich, d.h. die Signalform ist symmetrisch. IRMP erkennt aber auch Protokolle, die mit unterschiedlichen Puls-/Pause-Längen arbeiten. Dies ist zum Beispiel bei dem [[IRMP#A1TVBOX|A1TVBOX]]-Protokoll der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Position.png|miniatur|Pulse Position Coding]]&lt;br /&gt;
&lt;br /&gt;
Die Pulse Position Kodierung kennt man von den üblichen UARTs. Hier hat jedes Bit eine feste Länge. Je nach Wert (0 oder 1) ist es ein Puls oder eine Pause.&lt;br /&gt;
&lt;br /&gt;
Typisches Kriterium für ein &#039;&#039;&#039;Pulse Position Protokoll&#039;&#039;&#039; ist:&lt;br /&gt;
&lt;br /&gt;
* es kommen &#039;&#039;&#039;Vielfache&#039;&#039;&#039; einer Grund-Puls-/Pausenlänge vor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eine tabellarische Aufstellung der verschiedenen IR-Protokolle findet man hier: [[IRMP#Die_IR-Protokolle_im_Detail|Die IR-Protokolle im Detail]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dort angegebenen Timingwerte sind Idealwerte. Bei einigen Fernbedienungen in der Praxis weichen sie um bis zu 40% voneinander ab. Deshalb arbeitet [[IRMP#top|IRMP]] mit Minimum-/Maximumsgrenzen, um bzgl. des Zeitverhaltens tolerabel zu sein.&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Erkennung ==&lt;br /&gt;
&lt;br /&gt;
Die meisten der von [[IRMP#top|IRMP]] decodierten Protokolle haben etwas gemeinsames: Sie weisen ein Start-Bit auf, welches vom Timing her ausgezeichnet, d.h. einmalig ist.&lt;br /&gt;
&lt;br /&gt;
Anhand dieses Start-Bit-Timings werden meistens die verschiedenen Protokolle unterschieden. [[IRMP#top|IRMP]] misst also das Timing des Start-Bits und stellt dann &amp;quot;on-the-fly&amp;quot; seine Timingtabellen auf das erkannte Protokoll um, damit die nach dem Start-Bit gesandten Daten in einem Rutsch eingelesen werden können, ohne das komplette Telegramm (Frame) erst speichern zu müssen. [[IRMP#top|IRMP]] wartet also nicht darauf, dass ein kompletter Frame eingelesen wurde, sondern legt direkt nach der ersten Pulserkennung los.&lt;br /&gt;
&lt;br /&gt;
Ist das gelesene Start-Bit nicht eindeutig, fährt [[IRMP#top|IRMP]] &amp;quot;mehrspurig&amp;quot;, d.h. es werden zum Beispiel zwei mögliche Protokolle gleichzeitig verfolgt. Sobald aus Plausibilitätsgründen eines der beiden Protokolle nicht mehr möglich sein kann, wird komplett auf das andere Protokoll gewechselt.&lt;br /&gt;
&lt;br /&gt;
Realisiert wird die Erkennung über eine [[Statemachine]], die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|timergesteuert]] über eine [[Interrupt|Interruptroutine]] in regelmäßigen Abständen (üblicherweise 15.000 mal in der Sekunde) aufgerufen wird. Die [[Statemachine]] kennt (unter anderem) folgende Zustände:&lt;br /&gt;
&lt;br /&gt;
* Erkenne den ersten Puls des Start-Bits&lt;br /&gt;
* Erkenne die Pause des Start-Bits&lt;br /&gt;
* Erkenne den Puls des ersten Datenbits&lt;br /&gt;
&lt;br /&gt;
Danach sind die Puls/Pause-Längen des Startbits bekannt. Nun werden alle vom Anwender aktivierten Protokolle nach diesen Längen durchsucht. Wurde ein Protokoll gefunden, werden die Timing-Tabellen dieses Protokolls geladen und im weiteren geprüft, ob die nachfolgenden Puls-/Pause-Zeiten innerhalb der geladenen Werte übereinstimmen.&lt;br /&gt;
&lt;br /&gt;
Es geht also weiter in der [[Statemachine]] mit folgenden Zuständen&lt;br /&gt;
&lt;br /&gt;
* Erkenne die Pausen der Datenbits&lt;br /&gt;
* Erkenne die Pulse der Datenbits&lt;br /&gt;
* Prüfe Timing. Wenn abweichend, schalte um auf ein anderes noch in Frage kommendes IR-Protokoll, ansonsten schalte [[Statemachine]] komplett zurück&lt;br /&gt;
* Erkenne das Stop-Bit, falls das Protokoll eines vorsieht&lt;br /&gt;
* Prüfe Daten auf Plausibilität, wie CRC oder andere redundante Datenbits&lt;br /&gt;
* Wandle die Daten in Geräte-Adresse und Kommando&lt;br /&gt;
* Erkenne Wiederholungen durch längere Tastendrücke, setze entsprechendes Flag&lt;br /&gt;
&lt;br /&gt;
Tatsächlich ist die [[Statemachine]] noch etwas komplizierter, da manche Protokolle gar kein Start-Bit (z.B. [[IRMP#DENON|Denon]]) bzw. mehrere Start-Bits (z.B. 4 bei [[IRMP#B.26O|B&amp;amp;O]]) haben bzw. mitten im Frame ein weiteres Synchronisierungs-Bit (z.B. [[IRMP#SAMSUNG|Samsung]]) vorsehen. Diese besonderen Bedingungen werden durch protokollspezifische &amp;quot;Spezialbehandlungen&amp;quot; im Code abgefangen.&lt;br /&gt;
&lt;br /&gt;
Das Umschalten auf ein anderes Protokoll kann mehrfach während des Empfangs des Frames geschehen, z.B. von [[IRMP#NEC42|NEC42]] (42 Bit) auf [[IRMP#NEC16|NEC16]] (8 Bit + Sync-Bit + 8 Bit), wenn vorzeitig ein zusätzliches Synchronisierungsbit erkannt wurde, oder von [[IRMP#NEC + extended NEC|NEC]]/[[IRMP#NEC42|NEC42]] (32/42 Bit) auf [[IRMP#JVC|JVC]] (16 Bit), wenn das Stop-Bit vorzeitig auftrat. Schwierig wird es dann, wenn zwei mögliche Protokolle nach Erkennung des Start-Bits unterschiedliche Kodierungen verwenden, z.B. wenn das eine Protokoll ein [[IRMP#Pulse Distance|Pulse Distance Coding]] und das andere ein [[IRMP#Biphase|Biphase Coding (Manchester)]] benutzt. Hier speichert [[IRMP#top|IRMP]] die jeweils völlig verschieden ermittelten Bits für beide Codierungen, um dann später die einen oder anderen&lt;br /&gt;
Werte wieder zu verwerfen.&lt;br /&gt;
&lt;br /&gt;
Desweiteren senden einige Fernbedienungen bei bestimmten Protokollen aus Gründen der Redundanz (Fehlererkennung) oder wegen längeren Tastendrucks Wiederholungsframes. Diese werden von IRMP unterschieden: Die für die Fehlererkennung zuständigen Frames werden von IRMP geprüft, aber nicht an die Anwendung zurückgegeben, die anderen werden als langer Tastendruck erkannt und entsprechend von IRMP gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9, Stand vom 19.02.2018&lt;br /&gt;
&lt;br /&gt;
Download Release-Version: [http://www.mikrocontroller.net/wikifiles/7/79/Irmp.zip Irmp.zip] &lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]] sind auch über SVN abrufbar: [http://www.mikrocontroller.net/svnbrowser/irmp/ IRMP im SVN], Download [http://www.mikrocontroller.net/svnbrowser/irmp/?view=tar Tarball], Git: [https://github.com/svn2github/irmp IRMP auf GitHub]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Version im SVN kann eine Zwischen- oder Test-Version sein, die nicht den hier dokumentierten Stand widerspiegelt! Im Zweifel verwendet man besser den obigen Download-Link auf Irmp.zip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Software-Änderungen kann man sich hier anschauen: [http://www.mikrocontroller.net/articles/IRMP#Software-Historie_IRMP Software-Historie IRMP]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Source-Code ==&lt;br /&gt;
&lt;br /&gt;
Der Source-Code lässt sich einfach für AVR-µCs übersetzen, indem man unter Windows die Projekt-Datei irmp.aps in das AVR Studio 4 lädt.&lt;br /&gt;
&lt;br /&gt;
Für andere Entwicklungsumgebungen ist leicht ein Projekt bzw. Makefile angelegt. Zum Source gehören:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] - Der eigentliche IR-Decoder&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h] - Sämtliche Definitionen zu den IR-Protokollen&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpsystem.h?view=markup irmpsystem.h] - Vom Zielsystem abhängige Definitionen für AVR/PIC/STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.h?view=markup irmp.h] - Include-Datei für die Applikation&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] - Anzupassende Konfigurationsdatei &lt;br /&gt;
&lt;br /&gt;
Beispiel Anwendungen (main-Funktionen und nötige Timer-Initialisierungen):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] - AVR&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr-uart.c?view=markup irmp-main-avr-uart.c] - AVR mit UART-Ausgabe&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-xc8.c?view=markup irmp-main-pic-xc8.c] - PIC18F4520&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-pic-12F1840.c?view=markup irmp-main-pic-12F1840.c] - PIC12F1840&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stm32.c?view=markup irmp-main-stm32.c] - STM32&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-stellaris-arm.c?view=markup irmp-main-stellaris-arm.c] - TI Stellaris LM4F120 Launchpad&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-esp8266.c?view=markup irmp-main-esp8266.c] - ESP8266&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-mbed.cpp?view=markup irmp-main-mbed.cpp] - MBED&lt;br /&gt;
* [http://www.mikrocontroller.net/svnbrowser/irmp/examples/Arduino/Arduino.ino?view=markup examples/Arduino/Arduino.ino] - Teensy 3.x&lt;br /&gt;
&lt;br /&gt;
{{Warnung|&lt;br /&gt;
;WICHTIG: Im Applikations-Source sollte nur irmp.h per include eingefügt werden, also lediglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Include-Dateien werden automatisch über irmp.h &amp;quot;eingefügt&amp;quot;. Siehe dazu auch die Beispieldatei irmp-main-avr.c.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muss die Preprocessor-Konstante &#039;&#039;&#039;F_CPU im Projekt bzw. Makefile&#039;&#039;&#039; gesetzt werden. Diese sollte mindestens den Wert 8000000UL haben, der Prozessor sollte also zumindest mit 8 MHz laufen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Auch auf PIC-Prozessoren ist [[IRMP#top|IRMP]] lauffähig. Für den PIC-CCS-Compiler sind entsprechende Preprocessor-Konstanten bereits gesetzt, so dass man [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] direkt in der CCS-Entwicklungsumgebung verwenden kann. Lediglich eine kleine Interrupt-Routine wie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void  TIMER2_isr(void) &lt;br /&gt;
{&lt;br /&gt;
 irmp_ISR ();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist hinzuzufügen, wobei man den Interrupt auf 66µs (also 15kHz) stellt. &lt;br /&gt;
&lt;br /&gt;
Für AVR-Prozessoren ist ein Beispiel für die Anwendung von [[IRMP#top|IRMP]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] zu finden - im wesentlichen geht es da um die [[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR|Timer]]-Initialisierung und den Abruf der empfangenen IR-Telegramme. Das empfangene Protokoll, die Geräte-Adresse und der Kommando-Code wird dann in der AVR-Version auf dem HW-UART ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Für das Stellaris LM4F120 Launchpad von TI (ARM Cortex M4) ist eine entsprechende Timer-Initialisierungsfunktion in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] bereits integriert.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann [[IRMP#top|IRMP]] auf STM32-Mikroprozessoren eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== avr-gcc-Optimierungen ===&lt;br /&gt;
&lt;br /&gt;
Ab Version avr-gcc 4.7.x kann die [https://gcc.gnu.org/onlinedocs/gccint/LTO.html#LTO LTO-Option] genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten der ISR etwas.&lt;br /&gt;
&lt;br /&gt;
Zu den sonst schon üblichen Compiler- und Linker-Optionen kommen noch folgende dazu:&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Compiler-Option: -flto&lt;br /&gt;
* Zusätzliche Linker-Optionen: -flto -Os&lt;br /&gt;
&lt;br /&gt;
Vergisst man (unter Windows?) die zusätzliche Linker-Option -Os, wird das Binary allerdings wesentlich größer, da dann nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von [[IRMP#top|IRMP]] wird über Parameter in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] vorgenommen, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#F_INTERRUPTS|Anzahl Interrupts pro Sekunde]]&lt;br /&gt;
* [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL|Unterstützte IR-Protokolle]]&lt;br /&gt;
* [[IRMP#IRMP_PORT_LETTER + IRMP_BIT_NUMBER|Hardware-Pin zum IR-Empfänger]]&lt;br /&gt;
* [[IRMP#IRMP_LOGGING|IR-Logging]]&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen in irmpconfig.h ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] decodiert sämtliche oben aufgelisteten Protokolle in einer ISR. Dafür sind einige Angaben nötig. Diese werden in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] eingestellt.&lt;br /&gt;
&lt;br /&gt;
==== F_INTERRUPTS ====&lt;br /&gt;
&lt;br /&gt;
Anzahl der Interrupts pro Sekunde. Der Wert kann zwischen 10000 und 20000 eingestellt werden. Je höher der Wert, desto besser die Auflösung und damit die Erkennung. Allerdings erkauft man sich diesen Vorteil mit erhöhter CPU-Last. Der Wert 15000 ist meist ein guter Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define F_INTERRUPTS                            15000      // interrupts per second&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf AVR-Prozessoren wird in der Beispielroutine in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c] der Timer1 mit 16-Bit-Genauigkeit verwendet. Sollte der Timer1 aus irgendwelchen Gründen nicht verfügbar sein, kann man alternativ auch den Timer2 mit 8-Bit-Genauigkeit verwenden.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall wird dieser dann konfiguriert über:&lt;br /&gt;
&lt;br /&gt;
Für ATmega8/ATmega16/ATmega32:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2  = (1 &amp;lt;&amp;lt; WGM21) | (1 &amp;lt;&amp;lt; CS21);                           // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK  = 1 &amp;lt;&amp;lt; OCIE2;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMP_vect)&lt;br /&gt;
{&lt;br /&gt;
  (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für ATmega88/ATmega168/ATmega328:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OCR2A   =  (uint8_t) ((F_CPU / F_INTERRUPTS) / 8) - 1 + 0.5);   // Compare Register OCR2&lt;br /&gt;
TCCR2A  = (1 &amp;lt;&amp;lt; WGM21);                          // CTC Mode, prescaler = 8 &lt;br /&gt;
TCCR2B  =  (1 &amp;lt;&amp;lt; CS21);                         // CTC Mode, prescaler = 8&lt;br /&gt;
TIMSK2  = 1 &amp;lt;&amp;lt; OCIE2A;                                           // enable timer2 interrupt&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER2_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   (void) irmp_ISR(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen AVR-µCs empfiehlt sich ein Blick ins Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Man sollte in diesem Fall nicht vergessen, auch die Interrupt-Routine an den Timer2 anzupassen:&lt;br /&gt;
&lt;br /&gt;
==== IRMP_SUPPORT_xxx_PROTOCOL ====&lt;br /&gt;
&lt;br /&gt;
Hier lässt sich einstellen, welche Protokolle von [[IRMP#top|IRMP]] unterstützt werden sollen. Die Standardprotokolle sind bereits aktiv. Möchte man weitere Protokolle einschalten bzw. einige aus Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] anzupassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// typical protocols, disable here!             Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // Kaseikyo             &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
&lt;br /&gt;
// more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_DENON_PROTOCOL             0       // DENON, Sharp         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6 &amp;amp; RC6A           &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_JVC_PROTOCOL               0       // JVC                  &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC16_PROTOCOL             0       // NEC16                &amp;gt;= 10000                 ~100 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NEC42_PROTOCOL             0       // NEC42                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SDA2008)       &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                &amp;gt;= 10000                 ~300 bytes&lt;br /&gt;
&lt;br /&gt;
// exotic protocols, enable here!               Enable  Remarks                 F_INTERRUPTS            Program Space&lt;br /&gt;
#define IRMP_SUPPORT_BOSE_PROTOCOL              0       // BOSE                 &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_KATHREIN_PROTOCOL          0       // Kathrein             &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               &amp;gt;= 10000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang &amp;amp; Olufsen       &amp;gt;= 10000                 ~200 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80 (SAA3004)     &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT (SAA3008)  &amp;gt;= 15000                  ~50 bytes&lt;br /&gt;
#define IRMP_SUPPORT_THOMSON_PROTOCOL           0       // Thomson              &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NIKON_PROTOCOL             0       // NIKON camera         &amp;gt;= 10000                 ~250 bytes&lt;br /&gt;
#define IRMP_SUPPORT_NETBOX_PROTOCOL            0       // Netbox keyboard      &amp;gt;= 10000                 ~400 bytes (PROTOTYPE!)&lt;br /&gt;
#define IRMP_SUPPORT_ORTEK_PROTOCOL             0       // ORTEK (Hama)         &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_TELEFUNKEN_PROTOCOL        0       // Telefunken 1560      &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     &amp;gt;= 10000 (better 15000)  ~150 bytes (~400 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               &amp;gt;= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)&lt;br /&gt;
#define IRMP_SUPPORT_ROOMBA_PROTOCOL            0       // iRobot Roomba        &amp;gt;= 10000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RUWIDO_PROTOCOL            0       // RUWIDO, T-Home       &amp;gt;= 15000                 ~550 bytes&lt;br /&gt;
#define IRMP_SUPPORT_A1TVBOX_PROTOCOL           0       // A1 TV BOX            &amp;gt;= 15000 (better 20000)  ~300 bytes&lt;br /&gt;
#define IRMP_SUPPORT_LEGO_PROTOCOL              0       // LEGO Power RC        &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
#define IRMP_SUPPORT_RCMM_PROTOCOL              0       // RCMM 12,24, or 32    &amp;gt;= 20000                 ~150 bytes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jedes von [[IRMP#top|IRMP]] unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; ungefähr den oben angegebenen Speicher an Code. Hier kann man Optimierungen vornehmen: Zum Beispiel ist die Modulationsfrequenz von 455kHz beim [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll weitab von den Frequenzen, die von den anderen Protokollen verwendet werden. Hier braucht man evtl. andere IR-Empfänger, anderenfalls kann man diese Protokolle einfach deaktiveren. Zum Beispiel kann man mit einem TSOP1738 kein [[IRMP#B&amp;amp;O|B&amp;amp;O]]-Protokoll (455kHz) mehr empfangen. &lt;br /&gt;
&lt;br /&gt;
Ausserdem werden die Protokolle [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]/[[IRMP#FDC|FDC]]/[[IRMP#RCCAR|RCCAR]] erst ab einer Scan-Frequenz von ca. 15kHz zuverlässig erkannt. Bei [[IRMP#LEGO|LEGO]] sind es sogar 20kHz. Wenn man also diese Protokolle nutzen will, muss man [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] entsprechend anpassen, sonst erscheint beim Übersetzen eine entsprechende Warnung und die entsprechenden Protokolle werden dann automatisch abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
==== IRMP_PORT_LETTER + IRMP_BIT_NUMBER ====&lt;br /&gt;
&lt;br /&gt;
Über diese Konstanten wird der Pin am µC beschrieben, an welchem der IR-Empfänger angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Standardwert ist PORT B6:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ATMEL AVR&lt;br /&gt;
 *---------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#if defined (ATMEL_AVR)                         // use PB6 as IR input on AVR&lt;br /&gt;
#  define IRMP_PORT_LETTER                      B&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       6&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Werte sind an den tatsächlichen Hardware-Pin des µCs anzupassen. &lt;br /&gt;
&lt;br /&gt;
Dies gilt ebenso für die STM32-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for ARM STM32&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (ARM_STM32)                       // use C13 as IR input on STM32&lt;br /&gt;
#  define IRMP_PORT_LETTER                      C&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       13&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Abschnitt für STM8-µCs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for STM8&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (SDCC_STM8)                       // use PA1 as IR input on STM8&lt;br /&gt;
#  define IRMP_PORT_LETTER                      A&lt;br /&gt;
#  define IRMP_BIT_NUMBER                       1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei den PIC-Prozessoren gibt es lediglich die anzupassende Konstante &#039;&#039;&#039;IRMP_PIN&#039;&#039;&#039; - je nach Compiler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC C18 compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_C18)                         // use RB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PORTBbits.RB4&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
 * Change hardware pin here for PIC CCS compiler&lt;br /&gt;
 *----------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
#elif defined (PIC_CCS)                         // use PB4 as IR input on PIC&lt;br /&gt;
#  define IRMP_PIN                              PIN_B4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_USE_CALLBACK ====&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_USE_CALLBACK                      0        // flag: 0 = don&#039;t use callbacks, 1 = use callbacks, default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man Callbacks einschaltet, wird bei jeder Pegeländerung des Eingangs eine Callback-Funktion aufgerufen. Dies kann zum Beispiel dafür verwendet werden, das eingehende IR-Signal sichtbar zu machen, also als Signal an einem weiteren Pin auszugeben.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define LED_PORT PORTD                                  // LED at PD6&lt;br /&gt;
#define LED_DDR  DDRD&lt;br /&gt;
#define LED_PIN  6&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 * Called (back) from IRMP module&lt;br /&gt;
 * This example switches a LED (which is connected to Vcc)&lt;br /&gt;
 *-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
void&lt;br /&gt;
led_callback (uint_fast8_t on)&lt;br /&gt;
{&lt;br /&gt;
    if (on)&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT &amp;amp;= ~(1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
       LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
main ()&lt;br /&gt;
{&lt;br /&gt;
    ...&lt;br /&gt;
    irmp_init ();&lt;br /&gt;
&lt;br /&gt;
    LED_DDR |= (1 &amp;lt;&amp;lt; LED_PIN);         // LED pin to output&lt;br /&gt;
    LED_PORT |= (1 &amp;lt;&amp;lt; LED_PIN);        // switch LED off (active low)&lt;br /&gt;
    irmp_set_callback_ptr (led_callback);&lt;br /&gt;
&lt;br /&gt;
    sei ();&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IRMP_LOGGING ====&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_LOGGING kann das Protokollieren von eingehenden IR-Frames eingeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Standardwert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not. default is 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Erläuterungen siehe [[IRMP#Scannen_von_unbekannten_IR-Protokollen|Scannen von unbekannten IR-Protokollen]].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Die von [[IRMP#top|IRMP]] unterstützten Protokolle weisen Bitlängen - teilweise variabel, teilweise fest - von 2 bis 48 Bit auf. Diese werden über Preprocessor-Defines beschrieben.&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] trennt diese IR-Telegramme prinzipiell in 3 Bereiche:&lt;br /&gt;
&lt;br /&gt;
 1. ID für verwendetes Protokoll&lt;br /&gt;
 2. Adresse bzw. Herstellercode&lt;br /&gt;
 3. Kommando&lt;br /&gt;
&lt;br /&gt;
Mittels der Funktion&lt;br /&gt;
&lt;br /&gt;
   irmp_get_data (IRMP_DATA * irmp_data_p)&lt;br /&gt;
&lt;br /&gt;
kann man ein decodiertes Telegramm abrufen. Der Return-Wert ist 1, wenn ein Telegramm eingelesen wurde, sonst 0. Im ersten Fall werden die Struct-Members&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    irmp_data_p-&amp;gt;protocol (8 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;address (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;command (16 Bit)&lt;br /&gt;
    irmp_data_p-&amp;gt;flags (8 Bit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gefüllt.&lt;br /&gt;
&lt;br /&gt;
Das heisst: am Ende bekommt man dann über irmp_get_data() einfach drei&lt;br /&gt;
Werte (Protokoll, Adresse und Kommando-Code), die man über ein if oder switch checken kann, z.&amp;amp;nbsp;B. hier eine Routine, welche die Tasten 1-9 auf einer Fernbedienung auswertet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
   if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
   {&lt;br /&gt;
      if (irmp_data.protocol == IRMP_NEC_PROTOCOL &amp;amp;&amp;amp;     // NEC-Protokoll&lt;br /&gt;
          irmp_data.address == 0x1234)                   // Adresse 0x1234&lt;br /&gt;
      {&lt;br /&gt;
         switch (irmp_data.command)&lt;br /&gt;
         {&lt;br /&gt;
            case 0x0001: key1_pressed(); break;          // Taste 1&lt;br /&gt;
            case 0x0002: key2_pressed(); break;          // Taste 2&lt;br /&gt;
            ...&lt;br /&gt;
            case 0x0009: key9_pressed(); break;          // Taste 9&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die möglichen Werte für irmp_data.protocol, siehe auch [http://www.mikrocontroller.net/svnbrowser/irmp/irmpprotocols.h?view=markup irmpprotocols.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define IRMP_SIRCS_PROTOCOL                      1              // Sony&lt;br /&gt;
#define IRMP_NEC_PROTOCOL                        2              // NEC, Pioneer, JVC, Toshiba, NoName etc.&lt;br /&gt;
#define IRMP_SAMSUNG_PROTOCOL                    3              // Samsung&lt;br /&gt;
#define IRMP_MATSUSHITA_PROTOCOL                 4              // Matsushita&lt;br /&gt;
#define IRMP_KASEIKYO_PROTOCOL                   5              // Kaseikyo (Panasonic etc)&lt;br /&gt;
#define IRMP_RECS80_PROTOCOL                     6              // Philips, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_RC5_PROTOCOL                        7              // Philips etc&lt;br /&gt;
#define IRMP_DENON_PROTOCOL                      8              // Denon, Sharp&lt;br /&gt;
#define IRMP_RC6_PROTOCOL                        9              // Philips etc&lt;br /&gt;
#define IRMP_SAMSUNG32_PROTOCOL                 10              // Samsung32: no sync pulse at bit 16, length 32 instead of 37&lt;br /&gt;
#define IRMP_APPLE_PROTOCOL                     11              // Apple, very similar to NEC&lt;br /&gt;
#define IRMP_RECS80EXT_PROTOCOL                 12              // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
#define IRMP_NUBERT_PROTOCOL                    13              // Nubert&lt;br /&gt;
#define IRMP_BANG_OLUFSEN_PROTOCOL              14              // Bang &amp;amp; Olufsen&lt;br /&gt;
#define IRMP_GRUNDIG_PROTOCOL                   15              // Grundig&lt;br /&gt;
#define IRMP_NOKIA_PROTOCOL                     16              // Nokia&lt;br /&gt;
#define IRMP_SIEMENS_PROTOCOL                   17              // Siemens, e.g. Gigaset&lt;br /&gt;
#define IRMP_FDC_PROTOCOL                       18              // FDC keyboard&lt;br /&gt;
#define IRMP_RCCAR_PROTOCOL                     19              // RC Car&lt;br /&gt;
#define IRMP_JVC_PROTOCOL                       20              // JVC (NEC with 16 bits)&lt;br /&gt;
#define IRMP_RC6A_PROTOCOL                      21              // RC6A, e.g. Kathrein, XBOX&lt;br /&gt;
#define IRMP_NIKON_PROTOCOL                     22              // Nikon&lt;br /&gt;
#define IRMP_RUWIDO_PROTOCOL                    23              // Ruwido, e.g. T-Home Mediareceiver&lt;br /&gt;
#define IRMP_IR60_PROTOCOL                      24              // IR60 (SDA2008)&lt;br /&gt;
#define IRMP_KATHREIN_PROTOCOL                  25              // Kathrein&lt;br /&gt;
#define IRMP_NETBOX_PROTOCOL                    26              // Netbox keyboard (bitserial)&lt;br /&gt;
#define IRMP_NEC16_PROTOCOL                     27              // NEC with 16 bits (incl. sync)&lt;br /&gt;
#define IRMP_NEC42_PROTOCOL                     28              // NEC with 42 bits&lt;br /&gt;
#define IRMP_LEGO_PROTOCOL                      29              // LEGO Power Functions RC&lt;br /&gt;
#define IRMP_THOMSON_PROTOCOL                   30              // Thomson&lt;br /&gt;
#define IRMP_BOSE_PROTOCOL                      31              // BOSE&lt;br /&gt;
#define IRMP_A1TVBOX_PROTOCOL                   32              // A1 TV Box&lt;br /&gt;
#define IRMP_ORTEK_PROTOCOL                     33              // ORTEK - Hama&lt;br /&gt;
#define IRMP_TELEFUNKEN_PROTOCOL                34              // Telefunken (1560)&lt;br /&gt;
#define IRMP_ROOMBA_PROTOCOL                    35              // iRobot Roomba vacuum cleaner&lt;br /&gt;
#define IRMP_RCMM32_PROTOCOL                    36              // Fujitsu-Siemens (Activy remote control)&lt;br /&gt;
#define IRMP_RCMM24_PROTOCOL                    37              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_RCMM12_PROTOCOL                    38              // Fujitsu-Siemens (Activy keyboard)&lt;br /&gt;
#define IRMP_SPEAKER_PROTOCOL                   39              // Another loudspeaker protocol, similar to Nubert&lt;br /&gt;
#define IRMP_LGAIR_PROTOCOL                     40              // LG air conditioner&lt;br /&gt;
#define IRMP_SAMSUNG48_PROTOCOL                 41              // air conditioner with SAMSUNG protocol (48 bits)&lt;br /&gt;
#define IRMP_MERLIN_PROTOCOL                    42              // Merlin (Pollin 620 185)&lt;br /&gt;
#define IRMP_PENTAX_PROTOCOL                    43              // Pentax camera&lt;br /&gt;
#define IRMP_FAN_PROTOCOL                       44              // FAN (ventilator), very similar to NUBERT, but last bit is data bit instead of stop bit&lt;br /&gt;
#define IRMP_S100_PROTOCOL                      45              // very similar to RC5, but 14 instead of 13 data bits&lt;br /&gt;
#define IRMP_ACP24_PROTOCOL                     46              // Stiebel Eltron ACP24 air conditioner&lt;br /&gt;
#define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte für die Adresse und das Kommando muss man natürlich einmal für eine unbekannte Fernbedienung auslesen und dann über ein UART oder LC-Display ausgeben, um sie dann im Programm hart zu kodieren. Oder man hat eine kleine Anlernroutine, wo man einmal die gewünschten Tasten drücken muss, um sie anschließend im EEPROM abzuspeichern. Ein Beispiel dazu findet man im Artikel [http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP Lernfähige IR-Fernbedienung mit IRMP].&lt;br /&gt;
&lt;br /&gt;
Eine weitere [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup Beispiel-Main-Funktion] ist im Zip-File enthalten, da sieht man dann auch die Initialisierung des Timers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Entprellen&amp;quot; von Tasten ===&lt;br /&gt;
&lt;br /&gt;
Um zu unterscheiden, ob eine Taste lange gedrückt wurde oder lediglich einzeln, dient das Bit IRMP_FLAG_REPETITION. Dieses wird im Struct-Member &#039;&#039;&#039;flags&#039;&#039;&#039; gesetzt, wenn eine Taste auf der Fernbedienung längere Zeit gedrückt wurde und dadurch immer wieder dasselbe Kommando innerhalb kurzer Zeitabstände ausgesandt wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION)&lt;br /&gt;
    {&lt;br /&gt;
      // Benutzer hält die Taste länger runter&lt;br /&gt;
      // entweder:&lt;br /&gt;
      //   ich ignoriere die (Wiederholungs-)Taste&lt;br /&gt;
      // oder:&lt;br /&gt;
      //   ich benutze diese Info, um einen Repeat-Effekt zu nutzen&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies kann zum Beispiel dafür genutzt werden, um die Tasten 0-9 zu &amp;quot;entprellen&amp;quot;, indem man Kommandos mit gesetztem Bit IRMP_FLAG_REPETITION ignoriert. Bei dem Drücken auf die Tasten VOLUME+ oder VOLUME- kann die wiederholte Auswertung ein und desselben Kommandos aber durchaus gewünscht sein - zum Beispiel, um [[LED-Fading|LEDs zu faden]].&lt;br /&gt;
&lt;br /&gt;
Wenn man nur Einzeltasten auswerten will, kann man obigen IF-Block reduzieren auf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (! (irmp_data.flags &amp;amp; IRMP_FLAG_REPETITION))&lt;br /&gt;
    {&lt;br /&gt;
      // Es handelt sich um eine neue Taste&lt;br /&gt;
      // ACTION!&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Working Horse&amp;quot; von [[IRMP#top|IRMP]] ist die Interrupt Service Routine irmp_ISR() welche 15.000 mal pro Sekunde aufgerufen werden sollte. Weicht dieser Wert ab, muss die Preprocessor-Konstante [[IRMP#F_INTERRUPTS|F_INTERRUPTS]] in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] angepasst werden. Der Wert kann zwischen 10kHz und 20kHz eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
irmp_ISR() detektiert zunächst die Länge und die Form des/der Startbits und ermittelt daraus das verwendete Protokoll. Sobald das Protokoll erkannt wurde, werden die weiter einzulesenden Bits parametrisiert, um dann möglichst effektiv in den weiteren Aufrufen das komplette IR-Telegramm einzulesen.&lt;br /&gt;
&lt;br /&gt;
Um direkt Kritikern den Wind aus den Segeln zu nehmen:&lt;br /&gt;
&lt;br /&gt;
Ich weiss, die ISR ist ziemlich groß. Aber da sie sich wie eine State Machine verhält, ist der tatsächlich ausgeführte Code pro Durchlauf relativ gering. Solange es &amp;quot;dunkel&amp;quot; ist (und das ist es ja die meiste Zeit ;-)) ist die aufgewendete Zeit sogar verschwindend gering. Im WordClock-Projekt werden mit ein- und demselben Timer 8 ISRs aufgerufen, davon ist die irmp_ISR() nur eine unter vielen. Bei mindestens 8 MHz CPU-Takt traten bisher keine Timing-Probleme auf. Daher sehe ich bei der Länge von irmp_ISR überhaupt kein Problem.&lt;br /&gt;
&lt;br /&gt;
Ein Quarz ist nicht unbedingt notwendig, es funktioniert auch mit dem internen Oszillator des AVRs, wenn man die Prescaler-Fuse entsprechend gesetzt hat, dass die CPU auch mit 8MHz rennt ... Die Fuse-Werte für einen ATMEGA88 findet man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmp-main-avr.c?view=markup irmp-main-avr.c].&lt;br /&gt;
&lt;br /&gt;
== Scannen von unbekannten IR-Protokollen ==&lt;br /&gt;
&lt;br /&gt;
Stellt man in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] in der Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    #define IRMP_LOGGING    0   // 1: log IR signal (scan), 0: do not (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
den Wert für [[IRMP#IRMP_LOGGING|IRMP_LOGGING]] auf 1, wird in [[IRMP#top|IRMP]] eine Protokollierung eingeschaltet: Es werden dann die Hell- und Dunkelphase auf dem UART des Microntrollers mit 9600Bd ausgegeben: 1=Dunkel, 0=Hell. Eventuell müssen dann die Konstanten in den Funktionen uart_init() und uart_putc() angepasst werden; das kommt auf den verwendeten AVR-µC an.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: Für PIC-Prozessoren gibt es ein eigenes Logging-Modul namens [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]. Dieses ermöglicht das Logging über USB. Für AVR-Prozessoren ist [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c] irrelevant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Protokoll-Scans mit einem Terminal-Emulationsprogramm auf und speichert sie dann als normale Datei ab, kann man diese Scan-Dateien zur Analyse verwenden, um damit [[IRMP#top|IRMP]] an das unbekannte Protokoll anzupassen - siehe nächstes Kapitel.&lt;br /&gt;
&lt;br /&gt;
Wer eine Fernbedienung hat, die nicht von [[IRMP#top|IRMP]] unterstützt wird, kann mir  ([http://www.mikrocontroller.net/user/show/ukw ukw]) gern die Scan-Dateien zuschicken. Ich schaue dann, ob das Protokoll in das IRMP-Konzept passt und passe gegebenenfalls den Source an.&lt;br /&gt;
&lt;br /&gt;
== IRMP unter Linux und Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzen ===&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] lässt sich auch unter Linux direkt kompilieren, um damit Infrarot-Scans, welche in Dateien gespeichert sind, direkt zu testen. Im Unterordner IR-Data finden sich solche Dateien, die man dem [[IRMP#top|IRMP]] direkt zum &amp;quot;Fraß&amp;quot; vorwerfen kann. &lt;br /&gt;
&lt;br /&gt;
Das Übersetzen von [[IRMP#top|IRMP]] geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    make -f makefile.lnx&lt;br /&gt;
&lt;br /&gt;
Dabei werden 3 IRMP-Versionen erzeugt:&lt;br /&gt;
&lt;br /&gt;
* irmp-10kHz: Version für 10kHz Scans&lt;br /&gt;
* irmp-15kHz: Version für 15kHz Scans&lt;br /&gt;
* irmp-20kHz: Version für 20kHz Scans&lt;br /&gt;
&lt;br /&gt;
=== Aufruf von IRMP ===&lt;br /&gt;
&lt;br /&gt;
Der Aufruf geschieht dann über:&lt;br /&gt;
&lt;br /&gt;
  ./irmp-nnkHz [-l|-p|-a|-v] &amp;lt; scan-file&lt;br /&gt;
&lt;br /&gt;
Die angegebenen Optionen schließen sich aus, das heisst, es kann jeweils nur eine Option zu einer Zeit angegeben werden:&lt;br /&gt;
&lt;br /&gt;
Option:&lt;br /&gt;
&lt;br /&gt;
   -l  List             gibt eine Liste der Pulse und Pausen aus&lt;br /&gt;
   -a analyze           analysiert die Puls-/Pausen und schreibt ein &amp;quot;Spektrum&amp;quot; in ASCII-Form&lt;br /&gt;
   -v verbose           ausführliche Ausgabe&lt;br /&gt;
   -p  Print Timings    gibt für alle Protokolle eine Timing-Tabelle aus&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
=== Normale Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 1&lt;br /&gt;
 00000001110111101000000001111111 p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 2&lt;br /&gt;
 00000001110111100100000010111111 p =  2, a = 0x7b80, c = 0x0002, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 3&lt;br /&gt;
 00000001110111101100000000111111 p =  2, a = 0x7b80, c = 0x0003, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 # Taste 4&lt;br /&gt;
 00000001110111100010000011011111 p =  2, a = 0x7b80, c = 0x0004, f = 0x00&lt;br /&gt;
 -------------------------------------------------------------------------&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen-Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -l &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
# Taste 1&lt;br /&gt;
pulse: 91 pause: 44&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 6&lt;br /&gt;
pulse: 6 pause: 5&lt;br /&gt;
pulse: 6 pause: 16&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyse ===&lt;br /&gt;
&lt;br /&gt;
   ./irmp-10kHz -a &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PULSES:&lt;br /&gt;
 90 o 1&lt;br /&gt;
 91 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 33&lt;br /&gt;
 92 ooo 2&lt;br /&gt;
pulse avg: 91.0=9102.8 us, min: 90=9000.0 us, max: 92=9200.0 us, tol:  1.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
START PAUSES:&lt;br /&gt;
 43 oo 1&lt;br /&gt;
 44 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 25&lt;br /&gt;
 45 oooooooooooooooooooooooo 10&lt;br /&gt;
pause avg: 44.2=4425.0 us, min: 43=4300.0 us, max: 45=4500.0 us, tol:  2.8%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PULSES:&lt;br /&gt;
  5 o 17&lt;br /&gt;
  6 ooooooooooooooooooooooooooooooooooooooooooooooooooooooo 562&lt;br /&gt;
  7 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 609&lt;br /&gt;
pulse avg:  6.5= 649.8 us, min:  5= 500.0 us, max:  7= 700.0 us, tol: 23.1%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
PAUSES:&lt;br /&gt;
  4 ooooooooooooooooooooooo 169&lt;br /&gt;
  5 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 412&lt;br /&gt;
  6 oooo 31&lt;br /&gt;
pause avg:  4.8= 477.5 us, min:  4= 400.0 us, max:  6= 600.0 us, tol: 25.7%&lt;br /&gt;
 15 oooooo 43&lt;br /&gt;
 16 oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 425&lt;br /&gt;
 17 oooooooooo 72&lt;br /&gt;
pause avg: 16.1=1605.4 us, min: 15=1500.0 us, max: 17=1700.0 us, tol:  6.6%&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier sieht man die gemessenen Zeiten aller Pulse und Pausen als (liegende) Glockenkurven, welche natürlich wegen der ASCII-Darstellung nicht gerade einer Idealkurve entsprechen. Je schmaler die gemessenen Kanäle, desto besser ist das Timing der Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Aus obigem Output kann man herauslesen:&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pulslänge zwischen 9000 und 9200 usec, im Mittel sind es 9102 usec. Die Abweichung von diesem Mittelwert liegt bei 1,1 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Das Start-Bit hat eine Pausenlänge zwischen 4300 usec und 4500 usec, der Mittelwert beträgt 4424 usec. Der Fehler liegt bei 2,8 Prozent.&lt;br /&gt;
&lt;br /&gt;
* Die Pulslänge eines Datenbits liegt zwischen 500 usec und 700 usec, im Mittel sind es 650 usec, der Fehler liegt bei (stolzen) 23,1 Prozent!&lt;br /&gt;
&lt;br /&gt;
Desweiteren gibt es noch 2 verschieden lange Pausen (für die Bits 0 und 1), das Ablesen der Werte überlasse ich dem geneigten Leser ;-)&lt;br /&gt;
&lt;br /&gt;
=== Ausführliche Ausgabe ===&lt;br /&gt;
&lt;br /&gt;
    ./irmp-10kHz -v &amp;lt; IR-Data/orion_vcr_07660BM070.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
# 1 - IR-cmd: 0x0001&lt;br /&gt;
   0.200ms [starting pulse]&lt;br /&gt;
  13.700ms [start-bit: pulse = 91, pause = 44]&lt;br /&gt;
protocol = NEC, start bit timings: pulse:  62 - 118, pause:  30 -  60&lt;br /&gt;
pulse_1:   3 -   8&lt;br /&gt;
pause_1:  11 -  23&lt;br /&gt;
pulse_0:   3 -   8&lt;br /&gt;
pause_0:   3 -   8&lt;br /&gt;
command_offset: 16&lt;br /&gt;
command_len:     16&lt;br /&gt;
complete_len:    32&lt;br /&gt;
stop_bit:         1&lt;br /&gt;
  14.800ms [bit  0: pulse =   6, pause =   5] 0&lt;br /&gt;
  16.000ms [bit  1: pulse =   6, pause =   6] 0&lt;br /&gt;
  17.100ms [bit  2: pulse =   6, pause =   5] 0&lt;br /&gt;
  18.200ms [bit  3: pulse =   6, pause =   5] 0&lt;br /&gt;
  19.300ms [bit  4: pulse =   6, pause =   5] 0&lt;br /&gt;
  20.500ms [bit  5: pulse =   6, pause =   6] 0&lt;br /&gt;
  21.600ms [bit  6: pulse =   6, pause =   5] 0&lt;br /&gt;
  23.800ms [bit  7: pulse =   6, pause =  16] 1&lt;br /&gt;
  26.100ms [bit  8: pulse =   6, pause =  17] 1&lt;br /&gt;
  28.300ms [bit  9: pulse =   6, pause =  16] 1&lt;br /&gt;
  29.500ms [bit 10: pulse =   6, pause =   6] 0&lt;br /&gt;
  31.700ms [bit 11: pulse =   6, pause =  16] 1&lt;br /&gt;
  34.000ms [bit 12: pulse =   6, pause =  17] 1&lt;br /&gt;
  36.200ms [bit 13: pulse =   6, pause =  16] 1&lt;br /&gt;
  38.500ms [bit 14: pulse =   6, pause =  17] 1&lt;br /&gt;
  39.600ms [bit 15: pulse =   6, pause =   5] 0&lt;br /&gt;
  41.900ms [bit 16: pulse =   6, pause =  17] 1&lt;br /&gt;
  43.000ms [bit 17: pulse =   6, pause =   5] 0&lt;br /&gt;
  44.100ms [bit 18: pulse =   6, pause =   5] 0&lt;br /&gt;
  45.200ms [bit 19: pulse =   6, pause =   5] 0&lt;br /&gt;
  46.400ms [bit 20: pulse =   7, pause =   5] 0&lt;br /&gt;
  47.500ms [bit 21: pulse =   6, pause =   5] 0&lt;br /&gt;
  48.600ms [bit 22: pulse =   6, pause =   5] 0&lt;br /&gt;
  49.800ms [bit 23: pulse =   6, pause =   6] 0&lt;br /&gt;
  50.900ms [bit 24: pulse =   5, pause =   6] 0&lt;br /&gt;
  53.100ms [bit 25: pulse =   6, pause =  16] 1&lt;br /&gt;
  55.400ms [bit 26: pulse =   6, pause =  17] 1&lt;br /&gt;
  57.600ms [bit 27: pulse =   6, pause =  16] 1&lt;br /&gt;
  59.900ms [bit 28: pulse =   6, pause =  17] 1&lt;br /&gt;
  62.100ms [bit 29: pulse =   6, pause =  16] 1&lt;br /&gt;
  64.400ms [bit 30: pulse =   6, pause =  17] 1&lt;br /&gt;
  66.700ms [bit 31: pulse =   6, pause =  17] 1&lt;br /&gt;
stop bit detected&lt;br /&gt;
  67.300ms code detected, length = 32&lt;br /&gt;
  67.300ms p =  2, a = 0x7b80, c = 0x0001, f = 0x00&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufruf unter Windows ===&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] kann man auch unter Windows nutzen, nämlich folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
* Eingabeaufforderung starten&lt;br /&gt;
* In das Verzeichnis irmp wechseln&lt;br /&gt;
* Aufruf von:&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt&lt;br /&gt;
&lt;br /&gt;
Es gelten dieselben Optionen wie für die Linux-Version.&lt;br /&gt;
&lt;br /&gt;
=== Längere Ausgaben ===&lt;br /&gt;
&lt;br /&gt;
Da manche Ausgaben sehr lang werden, empfiehlt es sich auch hier, die Ausgabe in eine Datei zu lenken oder in einen Pager weiterzuleiten, damit man seitenweise blättern kann:&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
&lt;br /&gt;
            ./irmp-10kHz &amp;lt; IR-Data/rc5x.txt | less&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
            irmp-10kHz.exe &amp;lt; IR-Data\rc5x.txt | more&lt;br /&gt;
&lt;br /&gt;
== Fernbedienungen ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Protokoll || Bezeichnung || Gerät || Device Address&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC_+_extended_NEC|NEC]] || Toshiba CT-9859 || Fernseher || 0x5F40&lt;br /&gt;
|-&lt;br /&gt;
| || Toshiba VT-728G || V-728G Videorekorder || 0x5B44&lt;br /&gt;
|-&lt;br /&gt;
| || Elta 8848 MP 4 || DVD-Player || 0x7F00&lt;br /&gt;
|-&lt;br /&gt;
| || AS-218 || Askey TV-View CHP03X (TV-Karte) || 0x3B86&lt;br /&gt;
|-&lt;br /&gt;
| || Cyberhome ??? || Cyberhome DVD Player || 0x6D72&lt;br /&gt;
|-&lt;br /&gt;
| || WD TV Live || Western Digital Multimediaplayer || 0x1F30&lt;br /&gt;
|-&lt;br /&gt;
| || Canon WL-DC100 || Kamera Canon PowerShot G5 || 0xB1CA&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#NEC16|NEC16]] || Daewoo || Videorekorder || 0x0015&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#KASEIKYO|KASEIKYO]] || Technics EUR646497 || AV Receiver SA-AX 730 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| || Panasonic TV || Fernseher TX-L32EW6 || 0x2002&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC5_+_RC5X|RC5]] || Loewe Assist/RC3/RC4 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#RC6_+_RC6A|RC6]] || Philips Television || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SIRCS|SIRCS]] || Sony RM-816 || Fernseher (FB auf TV-Mode) || 0x0000&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#DENON|DENON]] || DENON RC970 || AVR3805 (Verstärker) || 0x0008&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || DVD/CD-Player || 0x0002&lt;br /&gt;
|-&lt;br /&gt;
| || DENON RC970 || Tuner || 0x0006&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#SAMSUNG32|SAMSUNG32]] || Samsung AA59-00484A || LE40D550 Fernseher || 0x0707&lt;br /&gt;
|-&lt;br /&gt;
| || LG AKB72033901 || Blu-Ray Player BD370 || 0x2D2D&lt;br /&gt;
|-&lt;br /&gt;
| [[IRMP#APPLE|APPLE]] || Apple || Apple Dock (iPod 2) || 0x0020&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kameras ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Irmp-pentax.png|miniatur|Pentax-Protokoll]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt zunehmend auch die Fernsteuerung von Kameras, nämlich:&lt;br /&gt;
&lt;br /&gt;
* [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* [[IRMP#NIKON|NIKON]]&lt;br /&gt;
&lt;br /&gt;
Die Kommando-Vielfalt ist nicht gerade groß. Normalerweise verstehen die Kameras gerade mal das Kommando &amp;quot;Auslösen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Tabelle für [[IRMP#PENTAX|PENTAX]]-Kameras:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Kommando || Funktion&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Auslösen&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Zoomlevel umschalten&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da keine Adresse im [[IRMP#PENTAX|PENTAX]]-Protokoll vorgesehen ist, sollte man am diese beim Senden mittels [[IRSND]] am besten auf 0x0000 setzen. Ebenso sollte man in diesem Fall einen Quarz verwenden, da gerade die Nikons bezüglich des Timings sehr penibel sind.&lt;br /&gt;
&lt;br /&gt;
== IR-Tastaturen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:irmp-fdc3402.jpg|miniatur|FDC-3402-Tastatur]]&lt;br /&gt;
&lt;br /&gt;
[[IRMP#top|IRMP]] unterstützt ab Version 1.7.0 auch IR-Tastaturen, nämlich die Infrarot-Tastatur FDC-3402 - &amp;lt;s&amp;gt;erhältlich bei Pollin (Art. 711 056) für weniger als 2 EUR.&amp;lt;/s&amp;gt;  (Vergriffen, Stand 19.09.2017)&lt;br /&gt;
&lt;br /&gt;
Beim Erkennen einer Taste gibt [[IRMP#top|IRMP]] folgende Daten zurück:&lt;br /&gt;
&lt;br /&gt;
 Protokoll-Nummer (irmp_data.protocol): 18&lt;br /&gt;
 Addresse         (irmp_data.address):  0x003F&lt;br /&gt;
&lt;br /&gt;
Als Kommando (irmp_data.command) werden folgende Werte zurückgeliefert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste || Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 ||      || 0x0010 || TAB || 0x0020 || &#039;s&#039; || 0x0030 || &#039;c&#039; || 0x0040 ||      || 0x0050 || HOME || 0x0060 ||      || 0x0070 || MENUE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || &#039;^&#039; || 0x0011 || &#039;q&#039; || 0x0021 || &#039;d&#039; || 0x0031 || &#039;v&#039; || 0x0041 ||      || 0x0051 || END || 0x0061 ||      || 0x0071 || BACK&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002 || &#039;1&#039; || 0x0012 || &#039;w&#039; || 0x0022 || &#039;f&#039; || 0x0032 || &#039;b&#039; || 0x0042 ||      || 0x0052 ||      || 0x0062 ||      || 0x0072 || FORWARD&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003 || &#039;2&#039; || 0x0013 || &#039;e&#039; || 0x0023 || &#039;g&#039; || 0x0033 || &#039;n&#039; || 0x0043 ||      || 0x0053 || UP || 0x0063 ||      || 0x0073 || ADDRESS&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004 || &#039;3&#039; || 0x0014 || &#039;r&#039; || 0x0024 || &#039;h&#039; || 0x0034 || &#039;m&#039; || 0x0044 ||      || 0x0054 || DOWN || 0x0064 ||      || 0x0074 || WINDOW&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005 || &#039;4&#039; || 0x0015 || &#039;t&#039; || 0x0025 || &#039;j&#039; || 0x0035 || &#039;,&#039; || 0x0045 ||      || 0x0055 || PAGE_UP || 0x0065 ||      || 0x0075 || 1ST_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006 || &#039;5&#039; || 0x0016 || &#039;z&#039; || 0x0026 || &#039;k&#039; || 0x0036 || &#039;.&#039; || 0x0046 ||      || 0x0056 || PAGE_DOWN || 0x0066 ||      || 0x0076 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007 || &#039;6&#039; || 0x0017 || &#039;u&#039; || 0x0027 || &#039;l&#039; || 0x0037 || &#039;-&#039; || 0x0047 ||      || 0x0057 ||      || 0x0067 ||      || 0x0077 || MAIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008 || &#039;7&#039; || 0x0018 || &#039;i&#039; || 0x0028 || &#039;ö&#039; || 0x0038 ||      || 0x0048 ||      || 0x0058 ||      || 0x0068 ||      || 0x0078 || FAVORITES&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009 || &#039;8&#039; || 0x0019 || &#039;o&#039; || 0x0029 || &#039;ä&#039; || 0x0039 || SHIFT_RIGHT || 0x0049 ||      || 0x0059 || RIGHT || 0x0069 ||      || 0x0079 || NEW_PAGE&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A || &#039;9&#039; || 0x001A || &#039;p&#039; || 0x002A || &#039;#&#039; || 0x003A || CTRL || 0x004A ||      || 0x005A ||      || 0x006A ||      || 0x007A || SETUP&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B || &#039;0&#039; || 0x001B || &#039;ü&#039; || 0x002B || CR || 0x003B ||      || 0x004B || INSERT || 0x005B ||      || 0x006B ||      || 0x007B || FONT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C || &#039;ß&#039; || 0x001C || &#039;+&#039; || 0x002C || SHIFT_LEFT || 0x003C || ALT_LEFT || 0x004C || DELETE || 0x005C ||      || 0x006C ||      || 0x007C || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D || &#039;´&#039; || 0x001D ||      || 0x002D || &#039;&amp;lt;&#039; || 0x003D || SPACE || 0x004D ||      || 0x005D ||      || 0x006D ||      || 0x007D ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E ||      || 0x001E || CAPSLOCK || 0x002E || &#039;y&#039; || 0x003E || ALT_RIGHT || 0x004E ||      || 0x005E ||      || 0x006E || ESCAPE || 0x007E || ON_OFF&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F || BACKSPACE || 0x001F || &#039;a&#039; || 0x002F || &#039;x&#039; || 0x003F ||      || 0x004F || LEFT || 0x005F ||      || 0x006F ||      || 0x007F ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusatztasten links:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Code || Taste&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400 || KEY_MOUSE_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800 || KEY_MOUSE_2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei gelten die obigen Werte für das Drücken einer Taste. Wird die Taste wieder losgelassen, setzt [[IRMP#top|IRMP]] zusätzlich das 8. Bit im Kommando.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F&lt;br /&gt;
&lt;br /&gt;
Ausnahme ist die EIN/AUS-Taste: Diese sendet nur beim Drücken einen Code, nicht beim Loslassen.&lt;br /&gt;
&lt;br /&gt;
Wird eine Taste länger gedrückt, wird das in irmp_data.flag angezeigt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
                           command   flag&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x00&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      Taste &#039;a&#039; drücken:   0x001F    0x01&lt;br /&gt;
      ....&lt;br /&gt;
      Taste &#039;a&#039; loslassen: 0x009F    0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Werden Tastenkombinationen (zum Beispiel für ein großes &#039;A&#039;) gedrückt, dann sind die Rückgabewerte von [[IRMP#top|IRMP]] in folgendem Ablauf zu sehen:&lt;br /&gt;
&lt;br /&gt;
      Linke SHIFT-Taste drücken:   0x0002&lt;br /&gt;
      Taste &#039;a&#039; drücken:           0x001F&lt;br /&gt;
      Taste &#039;a&#039; loslassen:         0x009F&lt;br /&gt;
      Linke SHIFT-Taste loslassen: 0x0082&lt;br /&gt;
&lt;br /&gt;
In [http://www.mikrocontroller.net/svnbrowser/irmp/irmp.c?view=markup irmp.c] findet man für die LINUX-Version eine Funktion get_fdc_key(), welche als Vorlage dienen mag, die Keycodes einer FDC-Tastatur in die entsprechenden ASCII-Codes umzuwandeln. Diese Funktion kann man entweder lokal auf dem µC nutzen, um die Keycodes zu decodieren, oder auf einem Hostsystem (z.B. PC), an welches die IRMP-Data-Struktur gesandt wird. Dafür sollte man die Funktion incl. der dazugehörenden Preprozessor-Konstanten in seinen Applikations-Quelltext kopieren.&lt;br /&gt;
&lt;br /&gt;
Hier der entsprechende Auszug:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define STATE_LEFT_SHIFT    0x01&lt;br /&gt;
#define STATE_RIGHT_SHIFT   0x02&lt;br /&gt;
#define STATE_LEFT_CTRL     0x04&lt;br /&gt;
#define STATE_LEFT_ALT      0x08&lt;br /&gt;
#define STATE_RIGHT_ALT     0x10&lt;br /&gt;
&lt;br /&gt;
#define KEY_ESCAPE          0x1B            // keycode = 0x006e&lt;br /&gt;
#define KEY_MENUE           0x80            // keycode = 0x0070&lt;br /&gt;
#define KEY_BACK            0x81            // keycode = 0x0071&lt;br /&gt;
#define KEY_FORWARD         0x82            // keycode = 0x0072&lt;br /&gt;
#define KEY_ADDRESS         0x83            // keycode = 0x0073&lt;br /&gt;
#define KEY_WINDOW          0x84            // keycode = 0x0074&lt;br /&gt;
#define KEY_1ST_PAGE        0x85            // keycode = 0x0075&lt;br /&gt;
#define KEY_STOP            0x86            // keycode = 0x0076&lt;br /&gt;
#define KEY_MAIL            0x87            // keycode = 0x0077&lt;br /&gt;
#define KEY_FAVORITES       0x88            // keycode = 0x0078&lt;br /&gt;
#define KEY_NEW_PAGE        0x89            // keycode = 0x0079&lt;br /&gt;
#define KEY_SETUP           0x8A            // keycode = 0x007a&lt;br /&gt;
#define KEY_FONT            0x8B            // keycode = 0x007b&lt;br /&gt;
#define KEY_PRINT           0x8C            // keycode = 0x007c&lt;br /&gt;
#define KEY_ON_OFF          0x8E            // keycode = 0x007c&lt;br /&gt;
&lt;br /&gt;
#define KEY_INSERT          0x90            // keycode = 0x004b&lt;br /&gt;
#define KEY_DELETE          0x91            // keycode = 0x004c&lt;br /&gt;
#define KEY_LEFT            0x92            // keycode = 0x004f&lt;br /&gt;
#define KEY_HOME            0x93            // keycode = 0x0050&lt;br /&gt;
#define KEY_END             0x94            // keycode = 0x0051&lt;br /&gt;
#define KEY_UP              0x95            // keycode = 0x0053&lt;br /&gt;
#define KEY_DOWN            0x96            // keycode = 0x0054&lt;br /&gt;
#define KEY_PAGE_UP         0x97            // keycode = 0x0055&lt;br /&gt;
#define KEY_PAGE_DOWN       0x98            // keycode = 0x0056&lt;br /&gt;
#define KEY_RIGHT           0x99            // keycode = 0x0059&lt;br /&gt;
#define KEY_MOUSE_1         0x9E            // keycode = 0x0400&lt;br /&gt;
#define KEY_MOUSE_2         0x9F            // keycode = 0x0800&lt;br /&gt;
&lt;br /&gt;
static uint8_t&lt;br /&gt;
get_fdc_key (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    static uint8_t key_table[128] =&lt;br /&gt;
    {&lt;br /&gt;
     // 0     1    2    3    4    5    6    7    8     9     A     B     C     D    E    F&lt;br /&gt;
         0,   &#039;^&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;,  &#039;8&#039;,  &#039;9&#039;,  &#039;0&#039;,  0xDF, &#039;´&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;q&#039;, &#039;w&#039;, &#039;e&#039;, &#039;r&#039;, &#039;t&#039;, &#039;z&#039;, &#039;u&#039;, &#039;i&#039;,  &#039;o&#039;,  &#039;p&#039;,  0xFC, &#039;+&#039;,  0,   0,   &#039;a&#039;,&lt;br /&gt;
        &#039;s&#039;,  &#039;d&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, 0xF6, 0xE4, &#039;#&#039;,  &#039;\r&#039;, 0,    &#039;&amp;lt;&#039;, &#039;y&#039;, &#039;x&#039;,&lt;br /&gt;
        &#039;c&#039;,  &#039;v&#039;, &#039;b&#039;, &#039;n&#039;, &#039;m&#039;, &#039;,&#039;, &#039;.&#039;, &#039;-&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0,&lt;br /&gt;
&lt;br /&gt;
         0,   &#039;°&#039;, &#039;!&#039;, &#039;&amp;quot;&#039;, &#039;§&#039;, &#039;$&#039;, &#039;%&#039;, &#039;&amp;amp;&#039;, &#039;/&#039;,  &#039;(&#039;,  &#039;)&#039;,  &#039;=&#039;,  &#039;?&#039;,  &#039;`&#039;, 0,   &#039;\b&#039;,&lt;br /&gt;
        &#039;\t&#039;, &#039;Q&#039;, &#039;W&#039;, &#039;E&#039;, &#039;R&#039;, &#039;T&#039;, &#039;Z&#039;, &#039;U&#039;, &#039;I&#039;,  &#039;O&#039;,  &#039;P&#039;,  0xDC, &#039;*&#039;,  0,   0,   &#039;A&#039;,&lt;br /&gt;
        &#039;S&#039;,  &#039;D&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, 0xD6, 0xC4, &#039;\&#039;&#039;, &#039;\r&#039;, 0,    &#039;&amp;gt;&#039;, &#039;Y&#039;, &#039;X&#039;,&lt;br /&gt;
        &#039;C&#039;,  &#039;V&#039;, &#039;B&#039;, &#039;N&#039;, &#039;M&#039;, &#039;;&#039;, &#039;:&#039;, &#039;_&#039;, 0,    0,    0,    0,    0,    &#039; &#039;, 0,   0&lt;br /&gt;
    };&lt;br /&gt;
    static uint8_t state;&lt;br /&gt;
&lt;br /&gt;
    uint8_t key = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (cmd)&lt;br /&gt;
    {&lt;br /&gt;
        case 0x002C: state |=  STATE_LEFT_SHIFT;    break;              // pressed left shift&lt;br /&gt;
        case 0x00AC: state &amp;amp;= ~STATE_LEFT_SHIFT;    break;              // released left shift&lt;br /&gt;
        case 0x0039: state |=  STATE_RIGHT_SHIFT;   break;              // pressed right shift&lt;br /&gt;
        case 0x00B9: state &amp;amp;= ~STATE_RIGHT_SHIFT;   break;              // released right shift&lt;br /&gt;
        case 0x003A: state |=  STATE_LEFT_CTRL;     break;              // pressed left ctrl&lt;br /&gt;
        case 0x00BA: state &amp;amp;= ~STATE_LEFT_CTRL;     break;              // released left ctrl&lt;br /&gt;
        case 0x003C: state |=  STATE_LEFT_ALT;      break;              // pressed left alt&lt;br /&gt;
        case 0x00BC: state &amp;amp;= ~STATE_LEFT_ALT;      break;              // released left alt&lt;br /&gt;
        case 0x003E: state |=  STATE_RIGHT_ALT;     break;              // pressed left alt&lt;br /&gt;
        case 0x00BE: state &amp;amp;= ~STATE_RIGHT_ALT;     break;              // released left alt&lt;br /&gt;
&lt;br /&gt;
        case 0x006e: key = KEY_ESCAPE;              break;&lt;br /&gt;
        case 0x004b: key = KEY_INSERT;              break;&lt;br /&gt;
        case 0x004c: key = KEY_DELETE;              break;&lt;br /&gt;
        case 0x004f: key = KEY_LEFT;                break;&lt;br /&gt;
        case 0x0050: key = KEY_HOME;                break;&lt;br /&gt;
        case 0x0051: key = KEY_END;                 break;&lt;br /&gt;
        case 0x0053: key = KEY_UP;                  break;&lt;br /&gt;
        case 0x0054: key = KEY_DOWN;                break;&lt;br /&gt;
        case 0x0055: key = KEY_PAGE_UP;             break;&lt;br /&gt;
        case 0x0056: key = KEY_PAGE_DOWN;           break;&lt;br /&gt;
        case 0x0059: key = KEY_RIGHT;               break;&lt;br /&gt;
        case 0x0400: key = KEY_MOUSE_1;             break;&lt;br /&gt;
        case 0x0800: key = KEY_MOUSE_2;             break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            if (!(cmd &amp;amp; 0x80))                      // pressed key&lt;br /&gt;
            {&lt;br /&gt;
                if (cmd &amp;gt;= 0x70 &amp;amp;&amp;amp; cmd &amp;lt;= 0x7F)     // function keys&lt;br /&gt;
                {&lt;br /&gt;
                    key = cmd + 0x10;               // 7x -&amp;gt; 8x&lt;br /&gt;
                }&lt;br /&gt;
                else if (cmd &amp;lt; 64)                  // key listed in key_table&lt;br /&gt;
                {&lt;br /&gt;
                    if (state &amp;amp; (STATE_LEFT_ALT | STATE_RIGHT_ALT))&lt;br /&gt;
                    {&lt;br /&gt;
                        switch (cmd)&lt;br /&gt;
                        {&lt;br /&gt;
                            case 0x0003: key = 0xB2;    break; // ²&lt;br /&gt;
                            case 0x0008: key = &#039;{&#039;;     break;&lt;br /&gt;
                            case 0x0009: key = &#039;[&#039;;     break;&lt;br /&gt;
                            case 0x000A: key = &#039;]&#039;;     break;&lt;br /&gt;
                            case 0x000B: key = &#039;}&#039;;     break;&lt;br /&gt;
                            case 0x000C: key = &#039;\\&#039;;    break;&lt;br /&gt;
                            case 0x001C: key = &#039;~&#039;;     break;&lt;br /&gt;
                            case 0x002D: key = &#039;|&#039;;     break;&lt;br /&gt;
                            case 0x0034: key = 0xB5;    break; // µ&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (state &amp;amp; (STATE_LEFT_CTRL))&lt;br /&gt;
                    {&lt;br /&gt;
                        if (key_table[cmd] &amp;gt;= &#039;a&#039; &amp;amp;&amp;amp; key_table[cmd] &amp;lt;= &#039;z&#039;)&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd] - &#039;a&#039; + 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[cmd];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    else&lt;br /&gt;
                    {&lt;br /&gt;
                        int idx = cmd + ((state &amp;amp; (STATE_LEFT_SHIFT | STATE_RIGHT_SHIFT)) ? 64 : 0);&lt;br /&gt;
&lt;br /&gt;
                        if (key_table[idx])&lt;br /&gt;
                        {&lt;br /&gt;
                            key = key_table[idx];&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als letztes noch ein Beispiel einer Anwendung der Funktion get_fdc_key():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    if (irmp_get_data (&amp;amp;irmp_data))&lt;br /&gt;
    {&lt;br /&gt;
        uint8_t key;&lt;br /&gt;
&lt;br /&gt;
        if (irmp_data.protocol == IRMP_FDC_PROTOCOL &amp;amp;&amp;amp;&lt;br /&gt;
            (key = get_fdc_key (irmp_data.command)) != 0)&lt;br /&gt;
        {&lt;br /&gt;
            if ((key &amp;gt;= 0x20 &amp;amp;&amp;amp; key &amp;lt; 0x7F) || key &amp;gt;= 0xA0) // show only printable characters&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x, character = &#039;%c&#039;\n&amp;quot;, key, key);&lt;br /&gt;
            }&lt;br /&gt;
            else // it&#039;s a non-printable key&lt;br /&gt;
            {&lt;br /&gt;
                printf (&amp;quot;ascii-code = 0x%02x\n&amp;quot;, key);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle nicht-druckbaren Zeichen werden dabei folgendermaßen codiert:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste             || Konstante                || Wert&lt;br /&gt;
|-&lt;br /&gt;
| ESC               || KEY_ESCAPE              || 0x1B&lt;br /&gt;
|-&lt;br /&gt;
| Menü              || KEY_MENUE               || 0x80&lt;br /&gt;
|-&lt;br /&gt;
| Zurück            || KEY_BACK                || 0x81&lt;br /&gt;
|-&lt;br /&gt;
| Vorw.             || KEY_FORWARD             || 0x82&lt;br /&gt;
|-&lt;br /&gt;
| Adresse           || KEY_ADDRESS             || 0x83&lt;br /&gt;
|-&lt;br /&gt;
| Fenster           || KEY_WINDOW              || 0x84&lt;br /&gt;
|-&lt;br /&gt;
| 1. Seite          || KEY_1ST_PAGE            || 0x85&lt;br /&gt;
|-&lt;br /&gt;
| Stop              || KEY_STOP                || 0x86&lt;br /&gt;
|-&lt;br /&gt;
| Mail              || KEY_MAIL                || 0x87&lt;br /&gt;
|-&lt;br /&gt;
| Fav.              || KEY_FAVORITES           || 0x88&lt;br /&gt;
|-&lt;br /&gt;
| Neue Seite        || KEY_NEW_PAGE            || 0x89&lt;br /&gt;
|-&lt;br /&gt;
| Setup             || KEY_SETUP               || 0x8A&lt;br /&gt;
|-&lt;br /&gt;
| Schrift           || KEY_FONT                || 0x8B&lt;br /&gt;
|-&lt;br /&gt;
| Druck             || KEY_PRINT               || 0x8C&lt;br /&gt;
|-&lt;br /&gt;
| Ein/Aus           || KEY_ON_OFF              || 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| Backspace         || &#039;\b&#039;                    || 0x08&lt;br /&gt;
|-&lt;br /&gt;
| CR/ENTER          || &#039;\r&#039;                    || 0x0C&lt;br /&gt;
|-&lt;br /&gt;
| TAB               || &#039;\t&#039;                    || 0x09&lt;br /&gt;
|-&lt;br /&gt;
| Einfg             || KEY_INSERT              || 0x90&lt;br /&gt;
|-&lt;br /&gt;
| Entf              || KEY_DELETE              || 0x91&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_LEFT                || 0x92&lt;br /&gt;
|-&lt;br /&gt;
| Pos1              || KEY_HOME                || 0x93&lt;br /&gt;
|-&lt;br /&gt;
| Ende              || KEY_END                 || 0x94&lt;br /&gt;
|-&lt;br /&gt;
| Cursor rechts     || KEY_UP                  || 0x95&lt;br /&gt;
|-&lt;br /&gt;
| Cursor runter     || KEY_DOWN                || 0x96&lt;br /&gt;
|-&lt;br /&gt;
| Bild hoch         || KEY_PAGE_UP             || 0x97&lt;br /&gt;
|-&lt;br /&gt;
| Bild runter       || KEY_PAGE_DOWN           || 0x98&lt;br /&gt;
|-&lt;br /&gt;
| Cursor links      || KEY_RIGHT               || 0x99&lt;br /&gt;
|-&lt;br /&gt;
| Linke Maustaste   || KEY_MOUSE_1             || 0x9E&lt;br /&gt;
|-&lt;br /&gt;
| Rechte Maustaste  || KEY_MOUSE_2             || 0x9F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Funktion get_fdc_key berücksichtigt das Gedrückthalten der Shift-, Strg- und ALT-Tasten. Damit funktioniert nicht nur das Schreiben von Großbuchstaben, sondern auch das Auswählen der Sonderzeichen mit der Tastenkombination  ALT + Taste, z.B. ALT + m = µ oder ALT + q = @. Ebenso kann man mit der Strg-Taste die Control-Zeichen CTRL-A bis CTRL-Z senden. Die CapsLock-Taste wird ignoriert, da ich sie sowieso für die überflüssigste Taste überhaupt halte ;-)&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== Die IR-Protokolle im Detail ==&lt;br /&gt;
[[Datei:Pulse-Distance.png|miniatur|Pulse Distance Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NEC + extended NEC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC-Protokoll|NEC + extended NEC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz / 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten NEC || 8 Adress-Bits + 8 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten ext. NEC || 16 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || 9000µs Puls, 2250µs Pause, 560µs Puls, ~100ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JVC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#NEC16-Protokoll (JVC)|JVC]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 12 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause, 6000µs Pause bei Tasten-Wiederholung&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC16 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC16&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 8 Adress-Bits + 1 Sync-Bit + 8 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 560µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine/eine/zwei nach 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 25ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NEC42 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NEC42&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 42 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Adress-Bits + 13 invertierte Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 110ms (ab Start-Bit), 9000µs Puls, 2250µs Pause, 560µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ACP24 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#ACP24-Protokoll|ACP24]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 70 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 70 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 390µs Puls, 950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 390µs Puls,  950µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 390µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 390µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LGAIR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LGAIR-Protokoll|LGAIR]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 28 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 16 Kommando-Bits + 4 Checksum-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 9000µs Puls, 4500µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 560µs Puls,  560µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 560µs Puls, 1690µs Pause (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 560µs Puls (identisch mit [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first (&#039;&#039;&#039;abweichend&#039;&#039;&#039; zu [[IRMP#NEC_.2B_extended_NEC|NEC]])&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SAMSUNG-Protokoll|SAMSUNG]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || ?? kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten(1)-Bits + 1 Sync-Bit + 20 Daten(2)-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten(1) || 16 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten(2) || 4 ID-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Sync-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG32 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG32&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach ca. 47msec&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SAMSUNG48 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SAMSUNG48&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 32 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 8 Bits + 8 invertierte Bits + 8 Bits + 8 invertierte Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 4500µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1650µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || eine nach ca. 5 msec&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MATSUSHITA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#MATSUHITA-Protokoll|MATSUSHITA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Hersteller-Bits + 6 Kommando-Bits + 12 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TECHNICS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TECHNICS&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance, Timing identisch mit [[IRMP#MATSUSHITA|MATSUSHITA]]&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 22 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 11 Kommando-Bits + 11 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3488µs Puls, 3488µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 872µs Puls,  872µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 872µs Puls, 2616µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 872µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach 40ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KASEIKYO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;)|KASEIKYO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Hersteller-Bits + 4 Parity-Bits + 4 Genre1-Bits + 4 Genre2-Bits + 10 Kommando-Bits + 2 ID-Bits + 8 Parity-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3380µs Puls, 1690µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 423µs Puls,  423µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 423µs Puls, 1269µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 423µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames nach ca. 80ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80 ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bits + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 3 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RECS80EXT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RECS80- und RECS80-Extended-Protokoll|RECS80EXT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 Toggle-Bit + 4 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 3637µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls, 4902µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 7432µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DENON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Denon-Protokoll|DENON]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (in der Praxis, lt. Dokumentation: 32 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 5 Address-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Kommando || 6 Datenbits + 2 Extension Bits + 2 Data Construction Bits (normal: 00, invertiert: 11)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || kein Start-Bit&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls, 775µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 310µs Puls, 1780µs Pause (in der Praxis, lt. Doku: 275µs Puls, 1900µs Pause)&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 310µs Puls (310µs Puls, 745µs Pause (in der Praxis, lt. Doku: 275µs Puls)&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || Nach 65ms Wiederholung des Frames mit invertieren Kommando-Bits (Data Construction Bits = 11)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung der beiden Original-Frames nach 65ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== APPLE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;APPLE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress-Bits + 11100000 + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || siehe [[IRMP#NEC_+_extended_NEC|NEC]]&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BOSE ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;BOSE&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1060µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  437µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch ungeklärt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== B&amp;amp;O ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Bang &amp;amp; Olufsen|B&amp;amp;O]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 455 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 4 Start-Bits + 16 Daten-Bits + 1 Trailer-Bit + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 1 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 2 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 3 || 200µs Puls, 15425µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit 4 || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 200µs Puls, 2925µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 200µs Puls, 9175µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| R-Bit || 200µs Puls, 6050µs Pause, wiederholt das letzte Bit (repetition)&lt;br /&gt;
|-&lt;br /&gt;
| Trailer-Bit || 200µs Puls, 12300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 200µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FDC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FDC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 40 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 12 x 0-Bits + 4 Press/Release-Bits + 8 Kommando-Bits + 8 invertierte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2085µs Puls, 966µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 300µs Puls,  220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 300µs Puls, 715µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 300µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Drücken || Press/Release-Bits = 0000&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Loslassen || Press/Release-Bits = 1111&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Wiederholung nach Pause von 60ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NIKON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NIKON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 2 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 2 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls,  1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 3500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PANASONIC ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PANASONIC&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 3600µs Puls, 1600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 565µs Puls,  316µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 565µs Puls, 1140µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 565µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PENTAX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;PENTAX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 6 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2200µs Puls, 27100µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 1000µs Puls,  1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1000µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 1000µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KATHREIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;KATHREIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 210µs Puls, 6218µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Puls,  1400µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 3000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LEGO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#LEGO Power Functions RC|LEGO]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 158µs Puls, 1026µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 158µs Puls,  263µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 158µs Puls, 553µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 158µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VINCENT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#VINCENT|VINCENT]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 16 Adress- und 8 Kommando-Bits + 8 wiederholte Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2500µs Puls, 4600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 1540µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== THOMSON ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;THOMSON&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 33 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 0 Start-Bits + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 4 Adress-Bits + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 550µs Puls,  2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 550µs Puls, 4500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 550µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Framewiederholung nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== TELEFUNKEN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;TELEFUNKEN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 15 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 1500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || vermutlich MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RCCAR ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;RCCAR&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 13 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 2000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls,  900µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 600µs Puls, 450µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 600µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 40ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RCMM ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RCMM-Protokoll|RCMM]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM32 || 1 Start-Bit + 32 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM24 || 1 Start-Bit + 24 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Frame RCMM12 || 1 Start-Bit + 12 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM32 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM24 || 16 Adress-Bits (= 4 Mode-Bits + 12 Device-Bits) + 1 Toggle-Bit + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RCMM12 || 4 Adress-Bits (= 2 Mode-Bits + 2 Device-Bits) + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 500µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 00-Bits || 230µs Puls, 220µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 01-Bits || 230µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 10-Bits || 230µs Puls, 550µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 11-Bits || 230µs Puls, 720µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 230µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 80ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Width.png|miniatur|Pulse Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== SIRCS ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#SIRCS-Protokoll|SIRCS]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|Frequenz ||40 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 12-20 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 7 Kommando-Bits + 5 Adress-Bits + bis zu 8 zusätzliche Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 600µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1200µs Puls, 600µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || zweimalig nach ca. 25ms, d.h. 2. und 3. Frame&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || ab dem 4. identischen Frame, Abstand ca. 25ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Pulse-Distance-Width.png|miniatur|Pulse Distance Width Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Pulse Distance Width Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== NUBERT ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NUBERT&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Puls, 1300µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1340µs Puls, 340µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach 35ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FAN ====&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist sehr ähnlich zu [[IRMP#NUBERT|NUBERT]], jedoch wird nur ein Frame gesandt. Außerdem werden 11 statt 10 Datenbits verwendet und kein Stop-Bit versandt. Die Pause zwischen Frame-Wiederholungen ist wesentlich geringer.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;FAN &#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 11 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 11 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 380µs Puls, 1280µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1280µs Puls, 380µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || nach 6,6ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SPEAKER ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SPEAKER&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 10 Daten-Bits + 1 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 10 Kommando-Bits ?&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 440µs Puls, 1250µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 1250µs Puls, 440µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || 440µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || einmalig nach ca. 38ms&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || dritter, fünfter, siebter usw. identischer Frame&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ROOMBA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ROOMBA&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Distance Width&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 930µs Puls, 2790µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 2790µs Puls, 930µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || dreimalig nach jeweils 18ms?&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || noch unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Biphase-Coding.png|miniatur|Biphase Coding]]&lt;br /&gt;
&lt;br /&gt;
=== Biphase Protokolle ===&lt;br /&gt;
 &#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
==== RC5 + RC5X ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC5- und RC5x-Protokoll|RC5 + RC5X]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5 || 2 Start-Bits + 12 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5 || 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC5X || 1 Start-Bit + 13 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC5X || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 6 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== S100 ====&lt;br /&gt;
&lt;br /&gt;
Ähnlich zu RC5x, aber 14 statt 13 Daten-Bits und 56kHz Modulation&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;S100&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 14 Daten-Bits + 0 Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 1 invertiertes Kommando-Bit + 1 Toggle-Bit + 5 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RC6 + RC6A ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#RC6 und RC6A-Protokoll|RC6 + RC6A]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6 || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (000) + 1 Toggle-Bit + 16 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Frame RC6A || 1 Start-Bit + 1 Bit &amp;quot;1&amp;quot; + 3 Mode-Bits (110) + 1 Toggle-Bit + 31 Daten-Bits + 2666µs pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6 || 8 Adress-Bits + 8 Kommando Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A || &amp;quot;1&amp;quot; + 14 Hersteller-Bits + 8 System-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten RC6A Pace (Sky) || &amp;quot;1&amp;quot; + 3 Mode-Bits (&amp;quot;110&amp;quot;) + 1 Toggle-Bit(UNUSED &amp;quot;0&amp;quot;) + 16 Bit + 1 Toggle(!) + 15 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2666µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 0-Bit || 889µs Pause, 889µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| Toggle 1-Bit || 889µs Puls, 889µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 444µs Pause, 444µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 444µs Puls, 444µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GRUNDIG + NOKIA ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#Grundig-Protokoll|GRUNDIG + NOKIA]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz (?)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame-Paket || 1 Start-Frame + 19,968ms Pause + N Info-Frames + 117,76ms Pause + 1 Stop-Frame&lt;br /&gt;
|-&lt;br /&gt;
| Start-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Info-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Frame || 1 Pre-Bit + 1 Start-Bit + 9 Daten-Bits (alle 1) + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Grundig || 9 Kommando-Bits + 0 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Nokia || 8 Kommando-Bits + 8 Adress-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IR60 (SDA2008) ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[[IRMP#IR60 (SDA2008 bzw. MC14497P)|IR60 (SDA2008)]]&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 30 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Start Frame || 1 Start-Bit + 101111 + 0 Stop-Bits + 22ms Pause&lt;br /&gt;
|-&lt;br /&gt;
| Daten Frame || 1 Start-Bit + 7 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 0 Adress-Bits + 7 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 528µs Puls, 2639µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 528µs Pause, 528µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 528µs Puls, 528µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Info-Frames mit einem Pausenabstand von 117,76ms&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SIEMENS + RUWIDO ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;SIEMENS + RUWIDO&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 36 kHz? (Merlin-Tastatur mit Ruwido-Protokoll: 56 kHz)&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester)&lt;br /&gt;
|-&lt;br /&gt;
| Frame Siemens || 1 Start-Bit + 22 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Frame Ruwido || 1 Start-Bit + 17 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten Siemens || 11 Adress-Bits + 10 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Daten Ruwido || 9 Adress-Bits + 7 Kommando-Bits + 1 invertiertes Bit (letztes Bit davor nochmal invertiert)&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 275µs Pause, 275µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 275µs Puls, 275µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 1-malige Wiederholung mit gesetztem Repeat-Bit (?)&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des Original-Frames innerhalb von 100ms (?)&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== A1TVBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;A1TVBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 16 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 8 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 250µs Puls, 150µs + 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 150µs Pause, 250µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 250µs Puls, 150µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MERLIN ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;MERLIN&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 56 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) asymmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 8 Adress-Bits + 10 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bits || &amp;quot;10&amp;quot;, also 210µs Puls, 210µs + 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 210µs Pause, 210µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 210µs Puls, 210µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ORTEK ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;ORTEK&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Biphase (Manchester) symmetrisch&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 2 Start-Bits + 18 Daten-Bits + 0 Stop-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 6 Adress-Bits + 2 Spezial-Bits +  6 Kommando-Bits + 4 Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2000µs Puls, 1000µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| 0-Bit || 500µs Pause, 500µs Puls&lt;br /&gt;
|-&lt;br /&gt;
| 1-Bit || 500µs Puls, 500µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Stop-Bit || kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || 2 zusätzliche Frames mit gesetzten Spezial-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || N-fache Wiederholung des 2. Frames&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || MSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pulse Position Protokolle ===&lt;br /&gt;
&lt;br /&gt;
==== NETBOX ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;NETBOX&#039;&#039;&#039; || Wert&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width: 15em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width: 50em&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Frequenz || 38 kHz?&lt;br /&gt;
|-&lt;br /&gt;
| Kodierung || Pulse Position&lt;br /&gt;
|-&lt;br /&gt;
| Frame || 1 Start-Bit + 16 Daten-Bits, kein Stop-Bit&lt;br /&gt;
|-&lt;br /&gt;
| Daten || 3 Adress-Bits + 13 Kommando-Bits&lt;br /&gt;
|-&lt;br /&gt;
| Start-Bit || 2400µs Puls, 800µs Pause&lt;br /&gt;
|-&lt;br /&gt;
| Bitlänge || 800µs&lt;br /&gt;
|-&lt;br /&gt;
| Wiederholung || keine&lt;br /&gt;
|-&lt;br /&gt;
| Tasten-Wiederholung || Abstand ca. 35ms?&lt;br /&gt;
|-&lt;br /&gt;
| Bit-Order || LSB first&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software-Historie IRMP ==&lt;br /&gt;
&lt;br /&gt;
Änderungen IRMP in 3.0.x:&lt;br /&gt;
&lt;br /&gt;
Version 3.0.9:&lt;br /&gt;
&lt;br /&gt;
* 19.02.2018: Korrektur bei der Behandlung von irmp_flags nach ungültigen IR-Frames&lt;br /&gt;
&lt;br /&gt;
Version 3.0.8:&lt;br /&gt;
&lt;br /&gt;
* 25.08.2017: Neues Protokoll: IRMP16 zwecks transparenter Datenübertragung von 16-Bit-Daten&lt;br /&gt;
&lt;br /&gt;
Version 3.0.7:&lt;br /&gt;
&lt;br /&gt;
* Neues Protokoll: SAMSUNGAH&lt;br /&gt;
* Verbesserte ESP8266-Unterstützung&lt;br /&gt;
&lt;br /&gt;
Version 3.0.5:&lt;br /&gt;
&lt;br /&gt;
* 16.12.2016: Unterstützung von Nicht-Standard Nec-Repetition-Frames (4500us Pause statt 2250us)&lt;br /&gt;
&lt;br /&gt;
Version 3.0.4:&lt;br /&gt;
&lt;br /&gt;
* 18.11.2016: Buffer Overflow in irmp-main-avr-uart.c korrigiert&lt;br /&gt;
&lt;br /&gt;
Version 3.0.3:&lt;br /&gt;
&lt;br /&gt;
* 19.09.2016: Neues Protokoll [[IRMP#VINCENT|VINCENT]]&lt;br /&gt;
&lt;br /&gt;
Version 3.0.2:&lt;br /&gt;
&lt;br /&gt;
* 09.09.2016: Neues Protokoll [[IRMP#MITSU_HEAVY|Mitsubishi Heavy (Klimaanlage)]]&lt;br /&gt;
* 09.09.2016: Anpassungen an Compiler PIC C18&lt;br /&gt;
&lt;br /&gt;
Version 3.0.0:&lt;br /&gt;
&lt;br /&gt;
* 12.01.2016: Korrektur Portierung auf ESP8266&lt;br /&gt;
* 12.01.2016: Portierung auf MBED&lt;br /&gt;
* 12.01.2016: Mehrere plattformabhängige Beispiel-Main-Dateien hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Ältere Versionen:&lt;br /&gt;
&lt;br /&gt;
* 17.11.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PANASONIC|PANASONIC (Beamer)]]&lt;br /&gt;
* 17.11.2015: Portierung auf ESP8266&lt;br /&gt;
* 17.11.2015: Portierung auf Teensy (3.x)&lt;br /&gt;
* 10.11.2015: Unterstützung für STM8 Mikrcontroller&lt;br /&gt;
* 20.09.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TECHNICS|TECHNICS]]&lt;br /&gt;
* 15.06.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ACP24|ACP24]]&lt;br /&gt;
* 29.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#S100|S100]]&lt;br /&gt;
* 29.05.2015: Kleinere Korrekturen&lt;br /&gt;
* 28.05.2015: Logging für XMega hinzugefügt&lt;br /&gt;
* 28.05.2015: Timing-Korrekturen für FAN-Protokoll&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#MERLIN|MERLIN]]&lt;br /&gt;
* 27.05.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FAN|FAN]]&lt;br /&gt;
* 18.05.2015: F_CPU Macro für STM32L1XX hinzugefügt&lt;br /&gt;
* 18.05.2015: Korrekturen zur XMega-Portierung&lt;br /&gt;
* 23.04.2015: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#PENTAX|PENTAX]]&lt;br /&gt;
* 23.04.2015: Portierung auf AVR XMega&lt;br /&gt;
* 19.09.2014: Kleineren Bug behoben: Fehlendes Newline vor #else eingefügt&lt;br /&gt;
* 18.09.2014: Logging für ARM STM32F10X hinzugefügt&lt;br /&gt;
* 17.09.2014: PROGMEM-Zugriff für Array irmp_protocol_names[] korrigiert.&lt;br /&gt;
* 15.09.2014: Timing-Toleranzen für [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll vergrößert&lt;br /&gt;
* 15.09.2014: Wechsel von irmp_protocol_names auf PROGMEM, zusätzliche UART Routinen in irmp-main-avr-uart.c&lt;br /&gt;
* 21.07.2014: Portierung auf PIC 12F1840&lt;br /&gt;
* 09.07.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG48|SAMSUNG48]]&lt;br /&gt;
* 09.07.2014: Kleine Syntaxfehlerkorrektur&lt;br /&gt;
* 01.07.2014: Logging für ARM_STM32F4XX eingebaut&lt;br /&gt;
* 01.07.214: IRMP port für PIC XC8 compiler, Variadic Macros herausgenommen wg. dummen XC8-Compiler :-(&lt;br /&gt;
* 05.06.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LGAIR|LGAIR]]&lt;br /&gt;
* 30.05.2014: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SPEAKER|SPEAKER]]&lt;br /&gt;
* 30.05.2014: Timings für [[IRMP#SAMSUNG|SAMSUNG]]-Protokolle optimiert&lt;br /&gt;
* 20.02.2014: Fehlerhaftes Decodieren des [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokolls korrigiert&lt;br /&gt;
* 19.02.2014: &#039;&#039;&#039;Neue Protokolle&#039;&#039;&#039;: [[IRMP#RCMM|RCMM32, RCMM24 und RCMM12]]&lt;br /&gt;
* 17.09.2014: Timing für [[IRMP#ROOMBA|ROOMBA]] verbessert&lt;br /&gt;
* 09.04.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ROOMBA|ROOMBA]]&lt;br /&gt;
* 09.04.2013: Verbesserte Frame-Erkennung für [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#ORTEK|ORTEK (Hama)]]&lt;br /&gt;
* 19.03.2013: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#TELEFUNKEN|TELEFUNKEN]]&lt;br /&gt;
* 12.03.2013: Geänderte Timing-Toleranzen für [[IRMP#RECS80|RECS80]]- und  [[IRMP#RECS80EXT|RECS80EXT]]-Protokoll&lt;br /&gt;
* 21.01.2013: Korrekturen Erkennung des Wiederholungsframes beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 17.01.2013: Korrekturen Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 11.12.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#A1TVBOX|A1TVBOX]]&lt;br /&gt;
* 07.12.2012: Verbesserte Erkennung von [[IRMP#DENON|DENON]]-Wiederholungsframes&lt;br /&gt;
* 19.11.2012: Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4)&lt;br /&gt;
* 06.11.2012: Korrektur [[IRMP#DENON|DENON]]-Frame-Erkennung&lt;br /&gt;
* 26.10.2012: Einige Timer-Korrekturen, Anpassungen an Arduino&lt;br /&gt;
* 11.07.2012: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#BOSE|BOSE]]&lt;br /&gt;
* 18.06.2012: Unterstützung für ATtiny87/167 hinzugefügt&lt;br /&gt;
* 05.06.2012: Kleinere Korrekturen Portierung auf ARM STM32&lt;br /&gt;
* 05.06.2012: Include-Korrektur in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpextlog.c?view=markup irmpextlog.c]&lt;br /&gt;
* 05.06.2012: Bugfix, wenn nur [[IRMP#NEC_+_extended_NEC|NEC]] und [[IRMP#NEC42|NEC42]] aktiviert&lt;br /&gt;
* 23.05.2012: Portierung auf ARM STM32&lt;br /&gt;
* 23.05.2012: Bugfix Frame-Erkennung beim [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 27.02.2012: Bug in IR60-Decoder behoben&lt;br /&gt;
* 27.02.2012: Bug in CRC-Berechnung von [[IRMP#KASEIKYO|KASEIKYO]]-Frames behoben&lt;br /&gt;
* 27.02.2012: Portierung auf C18 Compiler für PIC-Mikroprozessoren&lt;br /&gt;
* 13.02.2012: Bugfix: oberstes Bit in Adresse falsch bei [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll, wenn auch [[IRMP#NEC42|NEC42]]-Protokoll eingeschaltet ist.&lt;br /&gt;
* 13.02.2012: Timing von [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll korrigiert&lt;br /&gt;
* 13.02.2012: [[IRMP#KASEIKYO|KASEIKYO]]: Genre2-Bits werden nun im oberen Nibble von flags gespeichert.&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#KATHREIN|KATHREIN]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|RUWIDO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#THOMSON|THOMSON]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#IR60 (SDA2008)|IR60 (SDA2008)]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#LEGO|LEGO]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC16|NEC16]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NEC42|NEC42]]&lt;br /&gt;
* 20.09.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NETBOX|NETBOX]]&lt;br /&gt;
* 20.09.2011: Portierung auf ATtiny84 und ATtiny85&lt;br /&gt;
* 20.09.2011: Verbesserung von Tastenwiederholungen bei [[IRMP#RC5_+_RC5X|RC5]]&lt;br /&gt;
* 20.09.2011: Verbessertes Decodieren von [[IRMP#Biphase|Biphase]]-Protokollen&lt;br /&gt;
* 20.09.2011: Korrekturen am [[IRMP#RECS80|RECS80]]-Decoder&lt;br /&gt;
* 20.09.2011: Korrekturen beim Erkennen von zusätzlichen Bits im SIRCS-Protocol&lt;br /&gt;
* 18.01.2011: Korrekturen für [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]]-Protokoll&lt;br /&gt;
* 18.01.2011: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NIKON|NIKON]]&lt;br /&gt;
* 18.01.2011: Speichern der zusätzlichen Bits (&amp;gt;12) im [[IRMP#SIRCS|SIRCS]]-Protokoll in der Adresse&lt;br /&gt;
* 18.01.2011: Timing-Korrekturen für [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 04.09.2010: Bugfix für F_INTERRUPTS &amp;gt;= 16000&lt;br /&gt;
&lt;br /&gt;
* 02.09.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RC6_+_RC6A|RC6A]]&lt;br /&gt;
&lt;br /&gt;
* 29.08.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#JVC|JVC]]&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Berücksichtigung der Genre-Bits. &#039;&#039;&#039;ACHTUNG: dadurch neue Command-Codes!&#039;&#039;&#039;&lt;br /&gt;
* 29.08.2010: [[IRMP#KASEIKYO|KASEIKYO]]-Protokoll: Verbesserte Behandlung von Wiederholungs-Frames&lt;br /&gt;
* 29.08.2010: Verbesserte Unterstützung des [[IRMP#APPLE|APPLE]]-Protokolls. &#039;&#039;&#039;ACHTUNG: dadurch neue Adress-Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 01.07.2010: Bugfix: Einführen eines Timeouts für [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames, um &amp;quot;Geisterkommandos&amp;quot; zu verhindern.&lt;br /&gt;
&lt;br /&gt;
* 26.06.2010: Bugfix: Deaktivieren von [[IRMP#RECS80|RECS80]], [[IRMP#RECS80EXT|RECS80EXT]] &amp;amp; [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] bei geringer Interrupt-Rate&lt;br /&gt;
&lt;br /&gt;
* 25.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RCCAR|RCCAR]]&lt;br /&gt;
* 25.06.2010: Tastenerkennung für [[IRMP#FDC|FDC]]-Protokoll (IR-keyboard) erweitert&lt;br /&gt;
* 25.06.2010: Interrupt-Frequenz nun bis zu 20kHz möglich&lt;br /&gt;
&lt;br /&gt;
* 09.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#FDC|FDC]] (IR-keyboard)&lt;br /&gt;
* 09.06.2010: Timing für [[IRMP#DENON|DENON]]-Protokoll korrigiert&lt;br /&gt;
&lt;br /&gt;
* 02.06.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SIEMENS_+_RUWIDO|SIEMENS]] (Gigaset)&lt;br /&gt;
&lt;br /&gt;
* 26.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|NOKIA]]&lt;br /&gt;
* 26.05.2010: Bugfix Auswertung von langen Tastendrücken bei [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]-Protokoll&lt;br /&gt;
&lt;br /&gt;
* 17.05.2010: Bugfix [[IRMP#SAMSUNG32|SAMSUNG32]]-Protokoll: Kommando-Bit-Maske korrigiert&lt;br /&gt;
&lt;br /&gt;
* 16.05.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#GRUNDIG_+_NOKIA|GRUNDIG]]&lt;br /&gt;
* 16.05.2010: Behandlung von automatischen Frame-Wiederholungen beim [[IRMP#SIRCS|SIRCS]]-, [[IRMP#SAMSUNG32|SAMSUNG32]]- und [[IRMP#NUBERT|NUBERT]]-Protokoll verbessert.&lt;br /&gt;
&lt;br /&gt;
* 28.04.2010: Nur einige kosmetische Code-Optimierungen&lt;br /&gt;
&lt;br /&gt;
* 16.04.2010: Sämtliche Timing-Toleranzen angepasst/optimiert&lt;br /&gt;
&lt;br /&gt;
* 12.04.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#B&amp;amp;O|Bang &amp;amp; Olufsen]]&lt;br /&gt;
&lt;br /&gt;
* 29.03.2010: Bugfix beim Erkennen von mehrfachen [[IRMP#NEC_+_extended_NEC|NEC]]-Repetition-Frames&lt;br /&gt;
* 29.03.2010: Konfiguration in [http://www.mikrocontroller.net/svnbrowser/irmp/irmpconfig.h?view=markup irmpconfig.h] ausgelagert&lt;br /&gt;
* 29.03.2010: Einführung einer Programmversion in README.txt: Version 1.0&lt;br /&gt;
&lt;br /&gt;
* 17.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#NUBERT|NUBERT]]&lt;br /&gt;
&lt;br /&gt;
* 16.03.2010: Korrektur der RECS80-Startbit-Timings&lt;br /&gt;
* 16.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#RECS80EXT|RECS80 Extended]]&lt;br /&gt;
&lt;br /&gt;
* 15.03.2010: Codeoptimierung&lt;br /&gt;
&lt;br /&gt;
* 14.03.2010: Portierung auf PIC&lt;br /&gt;
&lt;br /&gt;
* 11.03.2010: Anpassungen an verschiedene ATMega-Typen durchgeführt&lt;br /&gt;
&lt;br /&gt;
* 07.03.2010: Bugfix: Zurücksetzen der Statemachine nach einem unvollständigen [[IRMP#RC5_+_RC5X|RC5]]-Frame&lt;br /&gt;
&lt;br /&gt;
* 05.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#APPLE|APPLE]]&lt;br /&gt;
* 05.03.2010: Die Daten irmp_data.addr + irmp_data.command werden nun in der jeweiligen Bit-Order des verwendeten Protokolls gespeichert&lt;br /&gt;
&lt;br /&gt;
* 04.03.2010: &#039;&#039;&#039;Neues Protokoll&#039;&#039;&#039;: [[IRMP#SAMSUNG32|SAMSUNG32]] (Mix aus [[IRMP#SAMSUNG|SAMSUNG]] &amp;amp; [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll)&lt;br /&gt;
* 04.03.2010: Änderung der [[IRMP#SIRCS|SIRCS]]- und [[IRMP#KASEIKYO|KASEIKYO]]-Toleranzen&lt;br /&gt;
&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Korrekte Erkennung und Unterdrückung von automatischen Frame-Wiederholungen&lt;br /&gt;
* 02.03.2010: [[IRMP#SIRCS|SIRCS]]: Device-ID-Bits werden nun in irmp_data.command und nicht mehr in irmp_data.address gespeichert&lt;br /&gt;
* 02.03.2010: Vergrößerung des Scan Buffers (zwecks Protokollierung)&lt;br /&gt;
&lt;br /&gt;
* 24.02.2010: Neue Variable flags in IRMP_DATA zur Erkennung von langen Tastendrücken&lt;br /&gt;
&lt;br /&gt;
* 20.02.2010: Bugfix [[IRMP#DENON|DENON]]-Protokoll: Wiederholungsframe grundsätzlich invertiert&lt;br /&gt;
&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#NEC_+_extended_NEC|NEC]]-Protokoll-Varianten, z.&amp;amp;nbsp;B. [[IRMP#APPLE|APPLE]]-Fernbedienung&lt;br /&gt;
* 19.02.2010: Erkennung von [[IRMP#RC6_+_RC6A|RC6]]- und [[IRMP#DENON|DENON]]-Protokoll&lt;br /&gt;
* 19.02.2010: Verbesserung des [[IRMP#RC5_+_RC5X|RC5]]-Decoders (Bugfixes)&lt;br /&gt;
&lt;br /&gt;
* 13.02.2010: Bugfix: Puls/Pausen-Counter um 1 zu niedrig, nun bessere Erkennung bei Protokollen mit sehr kurzen Pulszeiten&lt;br /&gt;
* 13.02.2010: Erkennung der [[IRMP#NEC_+_extended_NEC|NEC]]-Wiederholungssequenz&lt;br /&gt;
&lt;br /&gt;
* 12.02.2010: [[IRMP#RC5_+_RC5X|RC5]]-Protokoll-Decoder hinzugefügt&lt;br /&gt;
&lt;br /&gt;
* 05.02.2010: Konflikt zwischen [[IRMP#SAMSUNG|SAMSUNG]]- und [[IRMP#MATSUSHITA|MATSUSHITA]]-Protokoll beseitigt&lt;br /&gt;
&lt;br /&gt;
* 07.01.2010: Erste Version&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
=== IR-Übersicht ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/index.php&lt;br /&gt;
* http://www.epanorama.net/links/irremote.html&lt;br /&gt;
* http://www.elektor.de/jahrgang/2008/juni/cc2-avr-projekt-%283%29-unsichtbare-kommandos.497184.lynkx?tab=4 (IR Übersicht &amp;amp; RC5)&lt;br /&gt;
&lt;br /&gt;
=== SIRCS-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/sirc.php&lt;br /&gt;
* http://www.ustr.net/infrared/sony.shtml&lt;br /&gt;
* http://users.telenet.be/davshomepage/sony.htm&lt;br /&gt;
* http://picprojects.org.uk/projects/sirc/&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== NEC-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nec.php&lt;br /&gt;
* http://www.ustr.net/infrared/nec.shtml&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== ACP24-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Das ACP24-Protokoll wird von Stiebel-Eltron-Klimaanlagen verwendet.&lt;br /&gt;
&lt;br /&gt;
Die 70 Datenbits sind folgendermaßen aufgebaut:&lt;br /&gt;
&lt;br /&gt;
              1         2         3         4         5         6&lt;br /&gt;
    0123456789012345678901234567890123456789012345678901234567890123456789&lt;br /&gt;
    N VVMMM    ? ???    t vmA x                 y                     TTTT&lt;br /&gt;
    0011001000000111000010001010000000000000000010000000000000000000001111on, temp=30&lt;br /&gt;
&lt;br /&gt;
Diese werden in die folgenden 16 Bits von irmp_data.command gewandelt:&lt;br /&gt;
&lt;br /&gt;
        5432109876543210&lt;br /&gt;
        NAVVvMMMmtxyTTTT&lt;br /&gt;
&lt;br /&gt;
Bedeutung der Symbole:&lt;br /&gt;
&lt;br /&gt;
    TTTT = Temperatur + 15 Grad&lt;br /&gt;
            TTTT&lt;br /&gt;
            ----------&lt;br /&gt;
            0000        ???&lt;br /&gt;
            0001        ???&lt;br /&gt;
            0010        ???&lt;br /&gt;
            0011        18 Grad&lt;br /&gt;
            0100        19 Grad&lt;br /&gt;
            0101        20 Grad&lt;br /&gt;
            0110        21 Grad&lt;br /&gt;
            ...&lt;br /&gt;
            1111        30 Grad&lt;br /&gt;
&lt;br /&gt;
    N    = Nacht-Modus&lt;br /&gt;
            N&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    VV   = Luefter-Stufe, v muss 1 sein!&lt;br /&gt;
            VV   v&lt;br /&gt;
            ----------&lt;br /&gt;
            00   1      Stufe 1&lt;br /&gt;
            01   1      Stufe 2&lt;br /&gt;
            10   1      Stufe 3&lt;br /&gt;
            11   1      Automatik&lt;br /&gt;
&lt;br /&gt;
    MMM  = Modus&lt;br /&gt;
            MMM  m&lt;br /&gt;
            ----------&lt;br /&gt;
            000  0      Ausschalten&lt;br /&gt;
            001  0      Einschalten&lt;br /&gt;
            001  1      Kuehlen&lt;br /&gt;
            010  1      Lueften&lt;br /&gt;
            011  1      Entfeuchten&lt;br /&gt;
            100  1      ???&lt;br /&gt;
            101  1      ---&lt;br /&gt;
            110  1      ---&lt;br /&gt;
            111  1      ---&lt;br /&gt;
&lt;br /&gt;
    A    = Automatik-Programm&lt;br /&gt;
            A&lt;br /&gt;
            ----------&lt;br /&gt;
            0           aus&lt;br /&gt;
            1           ein&lt;br /&gt;
&lt;br /&gt;
    t   = Timer&lt;br /&gt;
            t   x y&lt;br /&gt;
            ----------&lt;br /&gt;
            1   1 0     Timer 1&lt;br /&gt;
            1   0 1     Timer 2&lt;br /&gt;
&lt;br /&gt;
Um die Klimaanlage mittels [[IRSND]] anzusteuern, kann man folgende Funktionen verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;irmp.h&amp;quot;&lt;br /&gt;
#include &amp;quot;irsnd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_TEMPERATURE_MASK         0x000F                                          // TTTT&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_TIMER_MASK           (1&amp;lt;&amp;lt;6)                                          // t&lt;br /&gt;
#define IRMP_ACP24_TIMER1_MASK              (1&amp;lt;&amp;lt;5)                                          // x&lt;br /&gt;
#define IRMP_ACP24_TIMER2_MASK              (1&amp;lt;&amp;lt;4)                                          // y&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_MODE_MASK            (1&amp;lt;&amp;lt;7)                                          // m&lt;br /&gt;
#define IRMP_ACP24_MODE_POWER_ON_MASK       (1&amp;lt;&amp;lt;8)                                          // MMMm = 0010 Einschalten&lt;br /&gt;
#define IRMP_ACP24_MODE_COOLING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;8))             // MMMm = 0011 Kuehlen&lt;br /&gt;
#define IRMP_ACP24_MODE_VENTING_MASK        (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;9))             // MMMm = 0101 Lueften&lt;br /&gt;
#define IRMP_ACP24_MODE_DEMISTING_MASK      (IRMP_ACP24_SET_MODE_MASK | (1&amp;lt;&amp;lt;10) | (1&amp;lt;&amp;lt;8))   // MMMm = 1001 Entfeuchten&lt;br /&gt;
&lt;br /&gt;
#define IRMP_ACP24_SET_FAN_STEP_MASK        (1&amp;lt;&amp;lt;11)                                         // v&lt;br /&gt;
#define IRMP_ACP24_FAN_STEP_MASK            0x3000                                          // VV&lt;br /&gt;
#define IRMP24_ACP_FAN_STEP_BIT             12                                              // VV&lt;br /&gt;
#define IRMP_ACP24_AUTOMATIC_MASK           (1&amp;lt;&amp;lt;14)                                         // A&lt;br /&gt;
#define IRMP_ACP24_NIGHT_MASK               (1&amp;lt;&amp;lt;15)                                         // N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// possible values for acp24_set_mode();&lt;br /&gt;
#define ACP24_MODE_COOLING                  1&lt;br /&gt;
#define ACP24_MODE_VENTING                  2&lt;br /&gt;
#define ACP24_MODE_DEMISTING                3&lt;br /&gt;
&lt;br /&gt;
static uint8_t temperature = 18;                                                    // 18 degrees&lt;br /&gt;
&lt;br /&gt;
static void&lt;br /&gt;
acp24_send (uint16_t cmd)&lt;br /&gt;
{&lt;br /&gt;
    IRMP_DATA irmp_data;&lt;br /&gt;
&lt;br /&gt;
    cmd |=  (temperature - 15) &amp;amp; IRMP_ACP24_TEMPERATURE_MASK;&lt;br /&gt;
&lt;br /&gt;
    irmp_data.protocol = IRMP_ACP24_PROTOCOL;&lt;br /&gt;
    irmp_data.address  = 0x0000;&lt;br /&gt;
    irmp_data.command  = cmd;&lt;br /&gt;
    irmp_data.flags    = 0;&lt;br /&gt;
&lt;br /&gt;
    irsnd_send_data (&amp;amp;irmp_data, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_temperature (uint8_t temp)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    temperature = temp;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_off (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define ACP_FAN_STEP1       0&lt;br /&gt;
#define ACP_FAN_STEP2       1&lt;br /&gt;
#define ACP_FAN_STEP3       2&lt;br /&gt;
#define ACP_FAN_AUTOMATIC   3&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_fan (uint8_t fan_step)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK;&lt;br /&gt;
&lt;br /&gt;
    cmd |= IRMP_ACP24_SET_FAN_STEP_MASK | ((fan_step &amp;lt;&amp;lt; IRMP24_ACP_FAN_STEP_BIT) &amp;amp; IRMP_ACP24_FAN_STEP_MASK);&lt;br /&gt;
&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_set_mode (uint8_t mode)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = 0;&lt;br /&gt;
&lt;br /&gt;
    switch (mode)&lt;br /&gt;
    {&lt;br /&gt;
        case ACP24_MODE_COOLING:    cmd = IRMP_ACP24_MODE_COOLING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_VENTING:    cmd = IRMP_ACP24_MODE_VENTING_MASK;     break;&lt;br /&gt;
        case ACP24_MODE_DEMISTING:  cmd = IRMP_ACP24_MODE_DEMISTING_MASK;   break;&lt;br /&gt;
        default: return;&lt;br /&gt;
    }&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_automatic (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_AUTOMATIC_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
acp24_program_night (void)&lt;br /&gt;
{&lt;br /&gt;
    uint16_t    cmd = IRMP_ACP24_MODE_POWER_ON_MASK | IRMP_ACP24_NIGHT_MASK;&lt;br /&gt;
    acp24_send (cmd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGAIR-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
Der LG Air Conditioner ist eine Klimaanlage, die durch eine &amp;quot;intelligente&amp;quot; Fernbedienung gesteuert wird.&lt;br /&gt;
Dies sind die &amp;quot;entschlüsselten&amp;quot; Daten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Befehl                  AAAAAAAA  PW  Z  S  T  mmm  tttt  vvvv  PPPP&lt;br /&gt;
    --------------------------------------------------------------------&lt;br /&gt;
    ON 23C                  10001000  00  0  0  0  000  1000  0100  1100&lt;br /&gt;
    ON 26C                  10001000  00  0  0  0  000  1011  0100  1111&lt;br /&gt;
&lt;br /&gt;
    OFF                     10001000  11  0  0  0  000  0000  0101  0001&lt;br /&gt;
    TURN OFF                10001000  11  0  0  0  000  0000  0101  0001  (18C currently, identical with off)&lt;br /&gt;
&lt;br /&gt;
    TEMP DOWN 23C           10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
    MODE (to mode0, 23C)    10001000  00  0  0  1  000  1000  0100  0100&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (24C)           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
    TEMP DOWN 24C           10001000  00  0  0  1  000  1001  0100  0101&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (25C)           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
    TEMP DOWN 25C           10001000  00  0  0  1  000  1010  0100  0110&lt;br /&gt;
&lt;br /&gt;
    TEMP UP (26C)           10001000  00  0  0  1  000  1011  0100  0111&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  011  0111  0100  0110  (to mode1, 22C - when switching to mode1 temp automaticall sets to 22C)&lt;br /&gt;
    ON (mode1, 22C)         10001000  00  0  0  0  011  0111  0100  1110&lt;br /&gt;
&lt;br /&gt;
    MODE                    10001000  00  0  0  1  001  1000  0100  0101  (to mode2, no temperature displayed)&lt;br /&gt;
    ON (mode2)              10001000  00  0  0  0  001  1000  0100  1101&lt;br /&gt;
    MODE (to mode3, 23C)    10001000  00  0  0  1  100  1000  0100  1000&lt;br /&gt;
    ON (mode3, 23C)         10001000  00  0  0  0  100  1000  0100  0000&lt;br /&gt;
&lt;br /&gt;
    VENTILATION SLOW        10001000  00  0  0  1  000  0011  0000  1011&lt;br /&gt;
    VENTILATION MEDIUM      10001000  00  0  0  1  000  0011  0010  1101&lt;br /&gt;
    VENTILATION HIGH        10001000  00  0  0  1  000  0011  0100  1111&lt;br /&gt;
    VENTILATION LIGHT       10001000  00  0  0  1  000  0011  0101  0000&lt;br /&gt;
&lt;br /&gt;
    SWING ON/OFF            10001000  00  0  1  0  000  0000  0000  0001&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Format:     1 start bit + 8 address bits + 16 data bits + 4 checksum bits + 1 stop bit&lt;br /&gt;
&lt;br /&gt;
    Address:    AAAAAAAA = 0x88 (8 bits)&lt;br /&gt;
&lt;br /&gt;
    Data:       PW Z S T MMM tttt vvvv PPPP (16 bits)&lt;br /&gt;
&lt;br /&gt;
                PW:         Power:     00 = On, 11 = Off&lt;br /&gt;
&lt;br /&gt;
                Z:          N/A:       Always 0&lt;br /&gt;
&lt;br /&gt;
                S:          Swing:     1 = Toggle swing, all other data bits are zeros.&lt;br /&gt;
&lt;br /&gt;
                T:          Temp/Vent: 1 = Set temperature and ventilation&lt;br /&gt;
&lt;br /&gt;
                MMM:        Mode, can be combined with temperature&lt;br /&gt;
                            000=Mode 0&lt;br /&gt;
                            001=Mode 2&lt;br /&gt;
                            010=????&lt;br /&gt;
                            011=Mode 1&lt;br /&gt;
                            100=Mode 3&lt;br /&gt;
                            101=???&lt;br /&gt;
                            111=???&lt;br /&gt;
&lt;br /&gt;
                tttt:       Temperature:&lt;br /&gt;
                            0000=used by OFF command&lt;br /&gt;
                            0001=????&lt;br /&gt;
                            0010=????&lt;br /&gt;
                            0011=18°C&lt;br /&gt;
                            0100=19°C&lt;br /&gt;
                            0101=20°C&lt;br /&gt;
                            0110=21°C&lt;br /&gt;
                            0111=22°C&lt;br /&gt;
                            1000=23°C&lt;br /&gt;
                            1001=24°C&lt;br /&gt;
                            1010=25°C&lt;br /&gt;
                            1011=26°C&lt;br /&gt;
                            1011=27°C&lt;br /&gt;
                            1100=28°C&lt;br /&gt;
                            1101=29°C&lt;br /&gt;
                            1111=30°C&lt;br /&gt;
&lt;br /&gt;
                vvvv:       Ventilation:&lt;br /&gt;
                            0000=slow&lt;br /&gt;
                            0010=medium&lt;br /&gt;
                            0011=????&lt;br /&gt;
                            0100=high&lt;br /&gt;
                            0101=light&lt;br /&gt;
                            0110=????&lt;br /&gt;
                            0111=????&lt;br /&gt;
                            ...&lt;br /&gt;
                            1111=????&lt;br /&gt;
&lt;br /&gt;
    Checksum:   PPPP = (DataNibble1 + DataNibble2 + DataNibble3 + DataNibble4) &amp;amp; 0x0F&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NEC16-Protokoll (JVC) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/jvc.php&lt;br /&gt;
* http://www.ustr.net/infrared/jvc.shtml&lt;br /&gt;
&lt;br /&gt;
=== SAMSUNG-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
(wurde aus diversen Protokollen (Daewoo u.ä.) zusammengereimt, daher kein direkter Link auf irgendwelche SAMSUNG-Dokumentation verfügbar)&lt;br /&gt;
&lt;br /&gt;
Hier ein Link zum Daewoo-Protokoll, welches dasselbe Prinzip des Sync-Bits in der Mitte eines Frames nutzt, jedoch mit anderen Timing-Werten arbeitet:&lt;br /&gt;
&lt;br /&gt;
* http://users.telenet.be/davshomepage/daewoo.htm&lt;br /&gt;
&lt;br /&gt;
=== MATSUHITA-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
&lt;br /&gt;
=== KASEIKYO-Protokoll (auch &amp;quot;Japan-Protokoll&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
=== RECS80- und RECS80-Extended-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/recs80.php&lt;br /&gt;
&lt;br /&gt;
=== RC5- und RC5x-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc5.php&lt;br /&gt;
* http://users.telenet.be/davshomepage/rc5.htm&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.opendcc.de/info/rc5/rc5.html&lt;br /&gt;
&lt;br /&gt;
=== Denon-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.com/de/IR-Protokolle.php#DENON&lt;br /&gt;
* http://www.manualowl.com/m/Denon/AVR-3803/Manual/170243&lt;br /&gt;
&lt;br /&gt;
=== RC6 und RC6A-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rc6.php&lt;br /&gt;
* http://www.picbasic.nl/info_rc6_uk.htm&lt;br /&gt;
&lt;br /&gt;
=== Bang &amp;amp; Olufsen ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/33137/datalink.pdf&lt;br /&gt;
&lt;br /&gt;
=== Grundig-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.see-solutions.de/sonstiges/Grundig_10bit.pdf&lt;br /&gt;
&lt;br /&gt;
=== Nokia-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/nrc17.php&lt;br /&gt;
&lt;br /&gt;
=== IR60 (SDA2008 bzw. MC14497P) ===&lt;br /&gt;
&lt;br /&gt;
* http://www.datasheetcatalog.org/datasheet/motorola/MC14497P.pdf&lt;br /&gt;
&lt;br /&gt;
=== LEGO Power Functions RC ===&lt;br /&gt;
&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v110.pdf&lt;br /&gt;
* http://www.philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf&lt;br /&gt;
&lt;br /&gt;
=== RCMM-Protokoll ===&lt;br /&gt;
&lt;br /&gt;
* http://www.sbprojects.com/knowledge/ir/rcmm.php&lt;br /&gt;
&lt;br /&gt;
=== Diverse Protokolle ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf&lt;br /&gt;
* http://www.celadon.com/infrared_protocol/infrared_protocols_samples.pdf&lt;br /&gt;
* http://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf&lt;br /&gt;
&lt;br /&gt;
== IRMP auf Youtube ==&lt;br /&gt;
&lt;br /&gt;
Einige Videos zu [[IRMP#top|IRMP]] habe ich auf Youtube gefunden:&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=Q7DJvLIyTEI&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=1tQ_aqayWZk&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=W4tI2axR3-w&lt;br /&gt;
&lt;br /&gt;
* http://www.youtube.com/watch?v=SRs98dIe2WE&lt;br /&gt;
&lt;br /&gt;
* https://www.youtube.com/watch?v=Lf1Z318NKic&lt;br /&gt;
&lt;br /&gt;
== Weitere Artikel zu IRMP ==&lt;br /&gt;
&lt;br /&gt;
[http://www.infineon.com/dgdl/RF2ir+WhitePaper+V1.0.pdf?folderId=db3a3043191a246301192dd3ee2c2ae4&amp;amp;fileId=db3a30432b57a660012b5c16272c2e81 Whitepaper von Martin Gotschlich, Infineon Technologies AG]&lt;br /&gt;
&lt;br /&gt;
== Hardware / IRMP-Projekte ==&lt;br /&gt;
&lt;br /&gt;
=== Remote IRMP ===&lt;br /&gt;
&lt;br /&gt;
Netzwerkfähiger Infrarot-Sender und Empfänger mit Android Handy als Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
 * http://www.mikrocontroller.net/articles/Remote_IRMP&lt;br /&gt;
&lt;br /&gt;
=== IR-Tester mit AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Implementierung für Pollin AVR-NET-IO mit Pollin ADD-ON Board:&lt;br /&gt;
* http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=703&lt;br /&gt;
&lt;br /&gt;
=== USB IR Remote Receiver ===&lt;br /&gt;
&lt;br /&gt;
USB IR Remote Receiver von Hugo Portisch:&lt;br /&gt;
* http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver&lt;br /&gt;
&lt;br /&gt;
=== USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer ===&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/123572-fertig-irmp-auf-stm32-ein-usb-ir-empf%C3%A4nger-sender-einschalter-mit-wakeup-timer/&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_ein_USB_IR_Empf%C3%A4nger/Sender/Einschalter_mit_Wakeup-Timer&lt;br /&gt;
&lt;br /&gt;
=== USBASP ===&lt;br /&gt;
&lt;br /&gt;
IR-Einschalter auf Grundlage des USBasp&lt;br /&gt;
* http://wiki.easy-vdr.de/index.php?title=USBASP_Einschalter&lt;br /&gt;
&lt;br /&gt;
=== Servo-gesteuerter IR-Sender  ===&lt;br /&gt;
&lt;br /&gt;
Servo-gesteuerter IR-Sender mit Anlernfunktion von Stefan Pendsa:&lt;br /&gt;
* http://forum.mikrokopter.de/topic-21060.html&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=Projects&amp;amp;path=%2FServo-Controlled+IR-Transmitter%2F&amp;amp;#Ad2417800d6aa14bf08c571a896e9def7 SVN]&lt;br /&gt;
&lt;br /&gt;
=== Lernfähige IR-Fernbedienung ===&lt;br /&gt;
&lt;br /&gt;
Lernfähige IR-Fernbedienung von Robert und Frank M.&lt;br /&gt;
* http://www.mikrocontroller.net/articles/DIY_Lernfähige_Fernbedienung_mit_IRMP&lt;br /&gt;
&lt;br /&gt;
=== AVR Moodlight ===&lt;br /&gt;
&lt;br /&gt;
AVR Moodlight von Axel Schwenke&lt;br /&gt;
* http://www.mikrocontroller.net/topic/244768&lt;br /&gt;
&lt;br /&gt;
RGB Moodlight mit STM8 von Axel Schwenke&lt;br /&gt;
* https://www.mikrocontroller.net/topic/380098&lt;br /&gt;
&lt;br /&gt;
=== Infinity-Mirror-LED-Deckenlampe ===&lt;br /&gt;
&lt;br /&gt;
Infinity-Mirror-LED-Deckenlampe mit Fernbedienung von Philipp Meißner&lt;br /&gt;
* http://digital-nw.de/Infinity-Mirror.htm&lt;br /&gt;
&lt;br /&gt;
=== Kinosteuerung ===&lt;br /&gt;
&lt;br /&gt;
Kinosteuerung von Owagner&lt;br /&gt;
* http://ccc.zerties.org/index.php/Benutzer:Owagner&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsdimmer ===&lt;br /&gt;
&lt;br /&gt;
Phasenanschnittsdimmer - steuerbar über IR-Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://flosserver.dyndns.org/phasenanschnittsdimmer.php&lt;br /&gt;
&lt;br /&gt;
=== IRDioder – Ikea Dioder Hack ===&lt;br /&gt;
&lt;br /&gt;
Ikea Dioder Hack mit Atmel und Infrarotempfaenger:&lt;br /&gt;
&lt;br /&gt;
* http://marco-difeo.de/tag/infrared/&lt;br /&gt;
&lt;br /&gt;
=== Expedit Coffee Bar ===&lt;br /&gt;
&lt;br /&gt;
Ikea Expedit Regal - umgebaut zur Kaffee-Bar:&lt;br /&gt;
&lt;br /&gt;
* http://chaozlabs.blogspot.de/2013/09/expedit-coffee-bar.html&lt;br /&gt;
&lt;br /&gt;
=== Arduino als IR-Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Arduino als IR-Empfänger:&lt;br /&gt;
&lt;br /&gt;
* http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/110918-arduino-als-ir-empf%C3%A4nger-einsetzen/&lt;br /&gt;
&lt;br /&gt;
=== IR-Lautstärkesteuerung mit Stellaris Launchpad ===&lt;br /&gt;
&lt;br /&gt;
IR-Lautstärkesteuerung mit Stellaris Launchpad (ARM Cortex-M4F):&lt;br /&gt;
&lt;br /&gt;
* http://www.anthonyvh.com/2013/03/31/ir-volume-control/&lt;br /&gt;
&lt;br /&gt;
=== RemotePi Board ===&lt;br /&gt;
&lt;br /&gt;
Herunterfahren eines RaspPI mittels Fernbedienung:&lt;br /&gt;
&lt;br /&gt;
* http://www.msldigital.com/pages/more-information&lt;br /&gt;
&lt;br /&gt;
=== Ethernut &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP unter dem RTOS Ethernut:&lt;br /&gt;
&lt;br /&gt;
* http://www.klkl.de/ethernut.html&lt;br /&gt;
&lt;br /&gt;
=== LED strip Remote Control ===&lt;br /&gt;
&lt;br /&gt;
LED-Beleuchtung per Fernbedienung steuern:&lt;br /&gt;
&lt;br /&gt;
* http://www.solderlab.de/index.php/misc/led-strip-remote-control&lt;br /&gt;
&lt;br /&gt;
=== ADAT Audio Mixer ===&lt;br /&gt;
&lt;br /&gt;
Audio Mixer:&lt;br /&gt;
&lt;br /&gt;
* http://mailtonne.de/adat-audio-mixer/&lt;br /&gt;
&lt;br /&gt;
=== Ethersex &amp;amp; IRMP ===&lt;br /&gt;
&lt;br /&gt;
IRMP + IRSND Modul in Ethersex, einer modularen Firmware für AVR MCUs&lt;br /&gt;
&lt;br /&gt;
* http://ethersex.de/index.php/IRMP&lt;br /&gt;
&lt;br /&gt;
=== Mastermind Solver ===&lt;br /&gt;
&lt;br /&gt;
Mastermind-Solver mit LED-Streifen und IR-Fernbedienung &lt;br /&gt;
&lt;br /&gt;
* http://www.mystrobl.de/Plone/basteleien/weitere-bulls-and-cows-mastermind-implementationen/mm-v1821/mastermind-solver-mit-led-streifen-und-ir-fernbedienung&lt;br /&gt;
&lt;br /&gt;
=== A MythTV Remote Control without LIRC ===&lt;br /&gt;
&lt;br /&gt;
PC Remote Control mit ATtiny85&lt;br /&gt;
&lt;br /&gt;
* http://tomscircuits.blogspot.de/2014/12/a-mythtv-remote-control-without-lirc.html&lt;br /&gt;
&lt;br /&gt;
=== IRMP + IRSND Library für STM32F4 ===&lt;br /&gt;
&lt;br /&gt;
IRMP für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1516&lt;br /&gt;
&lt;br /&gt;
IRSND für STM32F4&lt;br /&gt;
&lt;br /&gt;
* http://mikrocontroller.bplaced.net/wordpress/?page_id=1940&lt;br /&gt;
&lt;br /&gt;
=== IRMP auf STM32 - Bauanleitung ===&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/IRMP_auf_STM32_-_Bauanleitung&lt;br /&gt;
&lt;br /&gt;
=== Studienarbeit - Erweiterung der Arduino Plattform ===&lt;br /&gt;
&lt;br /&gt;
* www.eislab.fim.uni-passau.de/files/publications/2010/StudentDiener_ErweiterungDerArduinoPlattform.pdf&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
&lt;br /&gt;
Ganz herzlich bedanken möchte ich mich bei Vlad Tepesch, Klaus Leidinger und Peter K., die mich mit Scan-Dateien ihrer Infrarot-Fernbedienungen versorgt haben. Dank auch an Klaus für seine nächtelangen Tests von [[IRMP#top|IRMP]] &amp;amp; [[IRSND#top|IRSND]].&lt;br /&gt;
&lt;br /&gt;
Ebenso bedanken möchte ich mich bei Christian F. für seine Tipps zur PIC-Portierung. Vielen Dank auch an gera für die Portierung auf den PIC-C18 Compiler. Für die Portierung auf ARM STM32 bedanke ich mich herzlich bei kichi (Michael K.). Vielen Dank auch an Markus Schuster für die Portierung auf Stellaris LM4F120 Launchpad von TI (ARM Cortex M4). Danke an Matthias Frank für die Portierung auf XMega. Vielen Dank auch an Wolfgang S. für die Portierung auf ESP8266, Achill Hasler für die Portierung auf Teensy. Und zuletzt noch Dank an Axel Schwenke für den Port auf STM8.&lt;br /&gt;
&lt;br /&gt;
Mein Dank geht auch an Dániel Körmendi, welcher mich nicht nur immer wieder fleißig mit Scans versorgt, sondern auch das LG-AIR-Protokoll in den [[IRSND]] eingebaut hat. Danke auch hier an Ulrich v.d. Kammer für die [[IRSND]]-Variante des Pentax-Protokolls.&lt;br /&gt;
&lt;br /&gt;
Als letztes möchte ich mich bedanken bei Jojo S., der den größten Teil dieser Dokumentation ins Englische übersetzt hat. Great Job, Jojo!&lt;br /&gt;
&lt;br /&gt;
== Diskussion ==&lt;br /&gt;
&lt;br /&gt;
Meinungen, Verbesserungsvorschläge, harsche Kritik und ähnliches kann im [http://www.mikrocontroller.net/topic/162119 Beitrag: Infrared Multi Protocol Decoder] geäussert werden.&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit IRMP!&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infrarot]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TRIAC&amp;diff=98042</id>
		<title>TRIAC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TRIAC&amp;diff=98042"/>
		<updated>2017-12-23T14:08:40Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Tippfehler korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel versteht sich als Unterpunkt zum Artikel [[Leistungselektronik]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;Triac&#039;&#039;&#039; ist ein Schalter, der – einmal &amp;quot;gezündet&amp;quot; (angesteuert) – auch ohne weitere Ansteuerung in einem leitenden Zustand  bleibt, bis der im Datenblatt spezifizierte &amp;quot;Haltestrom&amp;quot; unterschritten wird. Bei Wechselspannung ist dies spätetens im Nulldurchgang des Stroms der Fall.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Triac1.png|miniatur|rechts|350px|Schematische Darstellung eines TRIAC mit den drei Anschlüssen A1 (Anode 1), A2 (Anode 2) und G (Gate]]&lt;br /&gt;
&lt;br /&gt;
==Einleitung==&lt;br /&gt;
&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Triac TRIAC] besteht vereinfacht gesagt aus der Zusammenschaltung von zwei [http://de.wikipedia.org/wiki/Thyristor Thyristoren]. Damit können beide Polaritäten der Wechselspannung geschaltet werden. Real besteht der Triac nicht einfach aus zwei antiparallel geschalteten Thyristoren, daher ist sein Aufbau leicht asymmetrisch. Als Folge davon erfolgt die Zündung des Triacs stets zwischen G und &#039;&#039;&#039;A1&#039;&#039;&#039;. Die Höhe des erforderlichen Zündstromes ist dem Datenblatt zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
===Vorteile eines TRIAC===&lt;br /&gt;
&lt;br /&gt;
* beide Polaritäten - also Wechselspannung - mit einem Bauteil schaltbar, im Gegensatz zum Thyristor/FET/IGBT&lt;br /&gt;
* Betriebsspannungen bis ca. 1kV möglich. &lt;br /&gt;
* Verlustleistung ist proportional zum Strom (I*V_AK).&lt;br /&gt;
* hohe Überlastfähigkeit für kurze Pulse.&lt;br /&gt;
* mit kurzen Ansteuerpulsen schaltbar.&lt;br /&gt;
* relativ einfache Art der Leistungsregelung in einem Wechselspannungssystem bei rein ohmschen Lasten.&lt;br /&gt;
&lt;br /&gt;
===Nachteile eines TRIAC===&lt;br /&gt;
&lt;br /&gt;
* empfindlich auf hohes dU/dt (Spannungsanstiegsgeschwindigkeit), ungewünschtes Wiederzünden (Über-Kopf-Zünden) bzw., Zerstörung des Bauteiles möglich.&lt;br /&gt;
* empfindlich auf hohes dI/dt (Stromanstiegsgeschwindigkeit), Zerstörung des Bauteiles möglich.&lt;br /&gt;
* nur mit sehr großem Zusatzaufwand abschaltbar.&lt;br /&gt;
* hohes Störpotential, daher&lt;br /&gt;
* aufwendige Entstörmaßnahmen erforderlich (Längsdrossel, Enstörkondensator, [[Snubber]]), außer bei „snubberless“-Typen&lt;br /&gt;
* eine Sicherung mit zu dem Triac passenden I²t muß ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
== Einsatzmöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
Ein Triac wird hauptsächlich für Phasen&#039;&#039;&#039;an&#039;&#039;&#039;schnittsteuerungen im 230V Netz eingesetzt. Der &#039;&#039;EIN&#039;&#039;schaltvorgang erfolgt &#039;&#039;nicht&#039;&#039; im Nulldurchgang der Spannung: Bei der Phasenanschnittsteuerung wird der Strom während der Halbwelle ein- und zum nächsten Nulldurchgang des Stroms abgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Bei der Phasen&#039;&#039;&#039;ab&#039;&#039;&#039;schnittsteuerung wird der Strom im Nulldurchgang ein- und noch vor dem nächsten Nulldurchgang abgeschaltet. Da eine vorzeitige Abschaltung eines TRIACs jedoch nur mit einem deutlich größeren Aufwand möglich ist, werden für solche Schaltungen heute meist [[FET|MOSFETs]] oder [[IGBT]]s genutzt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Vorsicht: Mit einfacher &amp;quot;RC-Diac-Standardansteuerung&amp;quot; absolut ungeeignet für elektronische Transformatoren bzw. Spannungswandler, Leuchtstoff- oder Energiesparlampen. Für diese Anwendungen sollte ein speziell darauf zugeschnittener Ansteuerbaustein verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Phasenanschnittsteuerung===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_Triac_mit_Optotriac_Ansteuerung2.png|miniatur|links|500px|Beispiel für ein Phasenanschnittsteuerung mit Triac &amp;amp; Optotriac]]&lt;br /&gt;
&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
==== Integrierte Ansteuerbausteine ====&lt;br /&gt;
&lt;br /&gt;
Die Ansteuerung eines TRIAC im Phasenanschnitt, mit oder ohne Mikrocontroller, wird durch integrierte Ansteuerbausteine ohne Nullspannungsschalter vereinfacht. &lt;br /&gt;
&lt;br /&gt;
Der sogenannte [[Optokoppler|Optotriac]] beinhaltet eine optische Trennstrecke &#039;&#039;und&#039;&#039; einen TRIAC für geringe Leistungen. Mit diesem Bauteil wird dann der Leistungs-TRIAC gezündet.  Der Nutzer muß sich hier nur mehr um die &amp;quot;Zündung&amp;quot; des Optotriacs nebst Randbeschaltung kümmern. Der Baustein selbst zündet den Haupt-TRIAC nur wenige Mikrosekunden später.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Integrierte Ansteuerbausteine mit optischer Isolation (&#039;&#039;&#039;ohne&#039;&#039;&#039; Nullspannungsschalter)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung|| Spannungsfestigkeit&amp;lt;br&amp;gt; max.||Verwendbarkeit ||erforderlicher&amp;lt;br&amp;gt;LED Triggerstrom&lt;br /&gt;
|-&lt;br /&gt;
| MOC3009 3010, 3012, 3012 || 250V|| gut geeignet für 120V_AC || 30, 15, 10, 5mA&lt;br /&gt;
|-&lt;br /&gt;
| MOC3020 3021, 3022, 3023 || 400V || knapp geeignet für 240V_AC || 30, 15, 10, 5mA&lt;br /&gt;
|-&lt;br /&gt;
| MOC3051, 3052 || 600V || gut geeignet für 240V_AC || 15, 10mA&lt;br /&gt;
|-&lt;br /&gt;
| IS6005||400V||billig, kleiner Triggerstrom|| 5mA&lt;br /&gt;
|-&lt;br /&gt;
|VOM160NT||600V|| sehr klein, SMD||5mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Betrieb mit induktiver Last ====&lt;br /&gt;
&lt;br /&gt;
Bei Lasten mit induktivem Anteil erfolgt bei jedem Schaltvorgang der &#039;&#039;&#039;nicht&#039;&#039;&#039; im Nulldurchgang bzw. bei &amp;quot;null&amp;quot; Strom(!) stattfindet, eine mehr oder weniger starke Rückwirkung auf TRIAC und Netz. Diese Rückwirkung entsteht aufgrund der hohen Stromänderungsgeschwindigkeit im Schaltvorgang. Dieses dI/dt löst einen entsprechend hohen Selbstinduktionsspannungspuls (dU=-L*dI/dt) aus, der den Triac zerstören kann. Weitere Auswirkungen sind z.&amp;amp;nbsp;B. flackernde Leuchtstoffröhren (Flicker), ein gestörter Radioempfang und gegebenenfalls ein Besuch der Rundfunkbehörde.&lt;br /&gt;
&lt;br /&gt;
Der TRIAC muß bei induktiver Last durch einen entsprechend dimensionierten [[Snubber]] geschützt sein.&lt;br /&gt;
&lt;br /&gt;
=== Vollwellensteuerung ===&lt;br /&gt;
&lt;br /&gt;
Auch Schwingungspaketsteuerung genannt.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Beide&#039;&#039;&#039; Schaltvorgänge erfolgen im Nulldurchgang, d.h. hier wird sowohl im Nulldurchgang ein- &#039;&#039;und&#039;&#039; ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Diese Art der Ansteuerung eignet sich gut für jede Art von Heizvorgängen oder aber als Ersatz für einen elektronischen Schalter (Solid State Relais).&lt;br /&gt;
Es gibt noch eine Unterscheidung zwischen Vollwellen- und Halbwellen-Steuerung: Bei größeren Leistungen führt die Halbwellensteuerung zu Unsymmetrie im Dreiphasen-Netz und sollte vermieden werden. Die meisten Energieversorger haben auch entsprechende Vorschriften. Die Vollwellensteuerung bringt sonst praktisch keinen weiteren Vorteil zur Halbwellensteuerung.&lt;br /&gt;
&lt;br /&gt;
====Vorteil====&lt;br /&gt;
&lt;br /&gt;
* praktisch keine Störungen bzw. Netzrückwirkungen&lt;br /&gt;
&lt;br /&gt;
====Nachteil====&lt;br /&gt;
&lt;br /&gt;
* Nicht geeignet zur Leistungsregelung von Trafos, Motoren oder Beleuchtungskörpern&lt;br /&gt;
&lt;br /&gt;
==== Integrierte Ansteuerbausteine ====&lt;br /&gt;
&lt;br /&gt;
Die Ansteuerung eines TRIAC in Halb- bzw. Vollwellensteuerung wird durch die nachfolgend aufgelisteten, integrierten Ansteuerbausteine &#039;&#039;mit Nullspannungsschalter&#039;&#039; deutlich erleichtert. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Integrierte Ansteuerbausteine mit optischer Isolation (&#039;&#039;&#039;mit&#039;&#039;&#039; Nullspannungsschalter)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung|| Spannungsfestigkeit&amp;lt;br&amp;gt; max.||Verwendbarkeit ||erforderlicher&amp;lt;br&amp;gt;LED Triggerstrom&lt;br /&gt;
|-&lt;br /&gt;
| MOC3041, 3042, 3043|| 400V || knapp geeignet für 240V~ || 15, 10, 5mA&lt;br /&gt;
|-&lt;br /&gt;
| MOC3061, 3062, 3063|| 600V || gut geeignet für 240V~ || 15, 10, 5mA&lt;br /&gt;
|-&lt;br /&gt;
| MOC3081, 3082, 3083|| 800V || gut geeignet für 400V~ || 15, 10, 5mA &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beispiel Vollwellensteuerung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_Triac_mit_Optotriac_Ansteuerung2.png|miniatur|links|500px|Beispiel für ein Vollwellenansteuerung mit Triac &amp;amp; Optotriac.&amp;lt;br/&amp;gt;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Optotriac durch einen mit Nullspannungsschalter ersetzen.]]&lt;br /&gt;
&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
===== Bauteileauswahl =====&lt;br /&gt;
&lt;br /&gt;
Bei der Auswahl der Bauteile ist darauf zu achten, dass das jeweilige Bauteil auch für die anliegende Spannung zugelassen ist. Kleinere Bauformen - sowohl bedrahtet, als auch SMD bis incl. 0204 - sind nur bis zu max. 200V zugelassen, daher auch die zwei Widerstände in Serienschaltung (R2+R3). Das zieht sich durch alle Bauteile. Ein 400V Triac ist nicht für 230Vrms = 325Vpk geeignet, da im Netz immer Spannungsspitzen aus verschiedensten Quellen auftreten. Grundsätzlich ist parallel zu jedem Triac ein 275V Varistor sehr empfehlenswert. Dabei ist darauf zu achten, daß der Varistor vom Netz her gesehen NACH der Sicherung kommt, da Varistoren im Fehlerfall sehr hohe Temperaturen erreichen können und von der Sicherung &amp;quot;abgeschaltet&amp;quot; werden müssen.&lt;br /&gt;
Genauso wichtig ist, daß der Snubber-Kondensator, unbedingt vom Typ &amp;quot;X2&amp;quot; sein muss.&lt;br /&gt;
&lt;br /&gt;
=== Crow-Bar ===&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Anwendungsfall ist der Einsatz als Schutzelement. Der Triac wird hierbei nach einer Sicherung zwischen die Versorgungsspannungsanschlüsse geschaltet und im Fehlerfall (Überspannung oder Verpolung) ausgelöst.&lt;br /&gt;
Dabei wird die Ein- bzw. Ausgangsspannung &amp;quot;hart&amp;quot; kurzgeschlossen, die Sicherung ausgelöst und damit eine Schaltung vor zu hoher oder falscher Betriebsspannung geschützt.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Leistungselektronik]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Snubber]]&lt;br /&gt;
* [[Transistor]]&lt;br /&gt;
* [[IGBT]]&lt;br /&gt;
* [[FET]]&lt;br /&gt;
* [[Kühlkörper]] &lt;br /&gt;
* [[Zwischenkreiskapazität]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/300638?goto=3217634#3217634 Forumsbeitrag]: Diskreter Thyristor: Haltestrom bestimmen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;br /&gt;
[[Kategorie:Leistungselektronik]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://axotron.se/index_en.php?page=26 Crowbar circuits], engl.&lt;br /&gt;
* [http://www.elektronik-kompendium.de/public/schaerer/crowbar.htm  Thyristor-Crowbar: Mit der Brechstange gegen zuviel Spannung!] auf ElKo.de&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Raspberry_Pi_als_Universalprogrammer&amp;diff=86104</id>
		<title>Raspberry Pi als Universalprogrammer</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Raspberry_Pi_als_Universalprogrammer&amp;diff=86104"/>
		<updated>2014-12-06T23:14:14Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: /* JTAG dongle/ FPGA-programmer */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:Fpgakuechle]] (Volker Urban)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
2014-11-22: Dieser Artikel ist noch in der Entstehung, Lücken sind bekannt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AllesPowerBar.JPG|thumb|400px|Raspberry Pi as AVR-programmer]]&lt;br /&gt;
=Vorüberlegungen=&lt;br /&gt;
==Grundkonzept==&lt;br /&gt;
Die nötigen GPIO&#039;s des Raspberries sind mit dem Programmierinterface des uC verbunden, ebenso die Stromversorgung&lt;br /&gt;
des zu programmierenden Devices. Die Programmierdatei wird von einem Host-PC auf den RasPi kopiert.&lt;br /&gt;
Über die Kommandozeile wird das Programmiertool auf dem RasPi gestartet.&lt;br /&gt;
&lt;br /&gt;
===Variante Ethernet-Dongle===&lt;br /&gt;
Ein Raspi ist über Ethernet mit einem PC verbunden. Auf dem PC (Laptop, Windows, Apple, egal) &lt;br /&gt;
läuft ein Terminal-Programm mit dem die Programmiertools auf dem RasPi gesteuert werden. &lt;br /&gt;
Die Programmierdatei wird ebenfalls über Ethernet auf den RasPi übetragen. Falls diese Konfiguration auch&lt;br /&gt;
an einem Laptop laufen soll muß die Powersupply auch mobil sein, also kein Steckernetzteil.&lt;br /&gt;
 &lt;br /&gt;
===Variante Standalone Programmer===&lt;br /&gt;
Der RasPi läuft als StandAlone Programmer, also ohne verbundenen PC. Dann muß am Raspi eine Tastatur über&lt;br /&gt;
USB und ein Monitor an HDMI angeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
===Variante WLAN===&lt;br /&gt;
Erfordert Router? &lt;br /&gt;
&lt;br /&gt;
===Headless Betrieb===&lt;br /&gt;
Für die Nutzung des RasPis ohne Monitor und RasPi eignen Tastatur nur über einer ssh-Verbindung über Ethernet (headless Betrieb)&lt;br /&gt;
werden oft Einstellungen vorgeschlagen die leider dazu führen das eine Internetverbindung das RaspPis über WLAN&lt;br /&gt;
nicht mehr möglich ist. Leider ist es dann auch nicht mehr möglich die Pakete für den Programmer zu installieren. Deshalb empfiehlt&lt;br /&gt;
der Autor erst nachdem der RasPi nachweislich als Programmer funktioniert, diesen auf Headless-Betrieb umzukonfigurien.&lt;br /&gt;
&lt;br /&gt;
==RasPi Hardware==   &lt;br /&gt;
===Modell-Auswahl===&lt;br /&gt;
Für die stand-alone Variante (RasPi mit Tastatur und Monitor) eignen sich modelA und B gleichermaßen,&lt;br /&gt;
Dagegen ist eine Terminalverbindung über Ethernet mit dem model A oder A+ nicht möglich da diesem die Schnittstelle fehlt. Eine Terminalverbindung über WLAN dagegen ist mit allen RasPi&#039;s möglich. Die A+ und B+ Modelle bieten zwar mehr GPIO&#039;s, die Grundausstattung der RasPi ohne Plus genügt aber für den Einsatz als &lt;br /&gt;
Programmer völlig. &lt;br /&gt;
&lt;br /&gt;
Der portable Betrieb mit Speisung über eine USB-Powerbar oder aus den USB-Ports&lt;br /&gt;
eines Laptops ist dem &amp;quot;Plus&amp;quot; Modellen einfacher da diese dank effizienter Regler weniger verbrauchen.&lt;br /&gt;
Ohne diese Regler gerät das Model B (ohne plus) schnell an die Grenze einer USB-Stromversorgung.&lt;br /&gt;
Das kann zu ungewollten Neustarts des RasPi führen, Abhilfe schafft nur ein sehr gutes USB-Netzteil.&lt;br /&gt;
Etwas geringer wird das Problem  wenn der Raspi über ein sogenanntes Y-Kabel von zwei USB-Anschlüssen des Laptops betrieben wird.&lt;br /&gt;
Ein USB-Anschluß darf mit höchstens 500 mA belastet werden, mit  dem genannten Kabel erhöht sich der verfügbare Strom auf 600 mA (Nach USB2.0.-Spec).&lt;br /&gt;
&lt;br /&gt;
===Raspberry Pinleiste===   &lt;br /&gt;
Der RasPi kann über seine Steckerleiste folgende Interface ansteuern&lt;br /&gt;
*Bitwackler (bitbanging) über 25 GPIO (modell b+)&lt;br /&gt;
*SPI  (wie die ISP -Schnittstelle der Atmel AVR-controller) 2x SPI_CE ; 3 Pins MISO,MOSI,SCLK&lt;br /&gt;
*UART (ein Paar RxD/TxD) &lt;br /&gt;
*I2C   (?ein Paar SDA,SCL)&lt;br /&gt;
&lt;br /&gt;
Ebenso liegen an zwei Pins 3V3 an mit denen bspw ein uC leicht versorgbar ist. An zwei weiteren Pins stellt&lt;br /&gt;
der RasPi 5V zur Verfügung, allerdings ist die Spannung verbrauchsabhängig meist etwas niedriger.&lt;br /&gt;
Massepotential liegt an 8 (model B+) Pins.&lt;br /&gt;
&lt;br /&gt;
Das Bitwackler Interface kann natürlich auch SPI, UART und I2C nachstellen, allerdings mit erhöhten Programmieraufwand&lt;br /&gt;
und meist nicht so schnell wie mit den speziellen SPI-Pins. Dafür ist es erste Wahl bei anderen Schnittstellen&lt;br /&gt;
wie JTAG.&lt;br /&gt;
&lt;br /&gt;
==Beschaltung==&lt;br /&gt;
Es gelten die üblichen RasPi GPIO Hinweise: &lt;br /&gt;
*An die Eingänge keine Signale mit Pegel höher 3.3V oder kleiner als 0V legen, diese können die CPU beschädigen. &lt;br /&gt;
*Schäden können auch auftreten falls ein Pin mit mehr Strom belastet wird als konfiguriert. Minimal sind 2 mA ein höherer Wert in 2 mA Schritten aber nicht mehr als 16 mA kann konfiguriert werden. Dieser Wert gilt für alle GPIO&#039;s, er kann nicht Pin-individuell geändert werden. Nach einem Reset ist ein Wert von  8 mA voreingestellt. Nie mehr Strom &amp;quot;ziehen&amp;quot; als konfiguriert, ganz vorsichtige Naturen begrenzen den Strom durch einen Serienwiderstand (bspw. 10k).&lt;br /&gt;
*Die 3V3 Spannung an der Pin-leiste wird über einen IC erzeugt, der höchstens 50 mA zur Verfügung stellt. (Dieser Wert wurde für die nicht &#039;+&#039; Modelle angegeben, möglichweise bei den im Bereich der Stromversorgung überarbeiteten &#039;+&#039; Modellen höher.&lt;br /&gt;
&lt;br /&gt;
===Bitwackler===&lt;br /&gt;
nicht unbedingt schnell (über Python 60 KHz ermittelt), mit passenden Treibern sollten &lt;br /&gt;
aber mehrere Hundert kHz möglich sein. Dafür ist das timing nach belieben programmierbar, was bspw. für&lt;br /&gt;
JTAG nützlich ist.&lt;br /&gt;
&lt;br /&gt;
===SPI-Schnittstelle und -Treiber===&lt;br /&gt;
Der RasPi hat in den betrachten Modellen (model A, model B, model B+) nur eine SPI-Schnittstelle, die&lt;br /&gt;
bei allen dreien die selben Pins nutzt. Varianten sind nur in der Nutzung der beiden Pins &#039;&#039;SPI_CE0&#039;&#039; und &#039;&#039;SPI_CE1&#039;&#039;&lt;br /&gt;
möglich, welche eines der angeschlossenen SPI-Geräte auswählen (bis zu zwei möglich). Befindet sich nur ein Gerät an dieser Schnittstelle können die beiden SPI_CE Pins unbenutzt bleiben.&lt;br /&gt;
 &lt;br /&gt;
Für die Nutzung der SPI - Schnittstelle des RasPi muß der passende SPI-Treiber (module) laufen. Das ist an dem&lt;br /&gt;
vorhandenen device &#039;&#039;/dev/spi0.0&#039;&#039; erkennbar. Findet sich unter &#039;&#039;/dev/&#039;&#039; kein SPI-device, dann ist das Module nicht&lt;br /&gt;
gestartet. Dieses wird über &#039;&#039;modprobe spi-bcm2708&#039;&#039; manuell gestartet. Soll es automatisch gestartet werden, darf das SPI-module nicht auf der schwarzen Liste &#039;&#039;/etc/modprobe.d/raspi-blacklist.conf&#039;&#039; stehen. Falls dort die Zeile &#039;&#039;blacklist spi-bcm2708&#039;&#039; steht mit einem vorangestellten &#039;#&#039; deaktivieren oder die gesamte Zeile löschen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# file: /etc/modprobe.d/raspi-blacklist.conf&lt;br /&gt;
# blacklist spi and i2c by default (many users don&#039;t need them)&lt;br /&gt;
&lt;br /&gt;
#blacklist spi-bcm2708&lt;br /&gt;
blacklist i2c-bcm2708&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=AVR-Programmer=&lt;br /&gt;
Um AVR-µC zu programmieren, benötigt man ein modifiziertes &#039;&#039;avrdude&#039;&#039; - ein weit verbreitetes Programmiertool. Dieses findet mal als Quellcode in einem git-Source-Depot und kompiliert es direkt&lt;br /&gt;
auf dem RasPi. Dazu werden weitere Pakete benötigt die aber nach Installation des kompilierten &#039;&#039;avrdude&#039;&#039; wieder entfernt werden können. Der avrdude nutzt auf dem RasPi die SPI-Schnittstelle auf der GPIO-Leiste und ein weiteres GPIO-Pin für die Resetleitung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:RasPi prog ATMega328P.JPG|thumb|400px|ATmega328P auf breadboard mit RasPi als Programmer]]&lt;br /&gt;
&lt;br /&gt;
==Verdrahtung==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Wiring RasPi &amp;lt;-&amp;gt; AVR&lt;br /&gt;
|-&lt;br /&gt;
!Signal  ||RasPi     ||Atmel  ||Mega32&lt;br /&gt;
|-&lt;br /&gt;
|MOSI    ||GPIO 10   ||       || &lt;br /&gt;
|-&lt;br /&gt;
|MISO    ||GPIO  9   ||       || &lt;br /&gt;
|-&lt;br /&gt;
|SCLK    ||GPIO 11   ||       || &lt;br /&gt;
|-&lt;br /&gt;
|RST_N   ||GPIO 25   ||       || &lt;br /&gt;
|-&lt;br /&gt;
|3V3     ||          ||       || &lt;br /&gt;
|- &lt;br /&gt;
|GND     ||          ||       || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Installation der Compiler==&lt;br /&gt;
Pakete: &lt;br /&gt;
*gcc  (C-Compiler)&lt;br /&gt;
*git  (Source-versionsverwaltung, nötig zum Download der avrdude-Sources)&lt;br /&gt;
*bison &lt;br /&gt;
*autoconf &lt;br /&gt;
*flex&lt;br /&gt;
&lt;br /&gt;
Kommando:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt_get update&lt;br /&gt;
apt_get install gcc git bison autoconf flex&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
?gcc-avr binutils-avr avr-libc?&lt;br /&gt;
&lt;br /&gt;
==avrdude Sourcen für RasPi aus Depot holen==&lt;br /&gt;
Depot: &lt;br /&gt;
https://github.com/kcuzner/avrude&lt;br /&gt;
Befehl: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/kcuzner/avrude&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==avrdude übersetzen und installieren==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd avrdude/avrdude&lt;br /&gt;
./bootstrap &amp;amp;&amp;amp; ./configure&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Einstellungen avrdude überprüfen und testen==&lt;br /&gt;
&lt;br /&gt;
In der Datei &#039;&#039;/usr/local/etc/averdude.conf&#039;&#039; stehen die Einstellungen für die verschiedenen AVR Programmer wie die Pinzuordnung - Welches AVR-Pin mit welchem Programmer Pin verbunden ist.&lt;br /&gt;
Für den RasPi finden sich diese in der Sektion &#039;&#039;linuxspi&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
programmer &lt;br /&gt;
  id       = &amp;quot;linuxspi&amp;quot;;&lt;br /&gt;
  desc     = &amp;quot;Use Linux SPI device in /dev/spidev*&amp;quot;;&lt;br /&gt;
  type     = &amp;quot;linuxspi&amp;quot;;&lt;br /&gt;
  reset    = 25;&lt;br /&gt;
  baudrate = 400000;&lt;br /&gt;
;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hier das Pin das mit dem Reset des AVR verbunden ist (Zeile &#039;&#039;reset = 25&#039;&#039;). Das kann ein beliebiges GPIO-Pin sein, hier wurde das Pin &#039;&#039;GPIO25&#039;&#039; gewählt. Die SPI-Pins (&#039;&#039;MISO&#039;&#039;, &#039;&#039;MOSI&#039;&#039;, &#039;&#039;CLK&#039;&#039;) sind nicht wählbar, da der RasPi in allen betrachteten Modellen nur einen SPI-Port hat.&lt;br /&gt;
 &lt;br /&gt;
Kritisch ist ebenfalls der Eintrag unter baudrate. Mit diesen wird eingestellt wie schnell das Signal SPI_CLK schaltet und damit wie schnell der Controller programmiert wird. Die maximal mögliche Baudrate variiert je nach AVR-Typ, Versorgungsspannung, Taktbeschaltung und Konfigurationsregister. Ein sicherer Wert sind 125 kHz,&lt;br /&gt;
die default Einstellung des avrdude liegt mit 400 000 deutlich darüber. Deshalb sollte man bei Problemen die Zeile zu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  baudrate = 100000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ändern.&lt;br /&gt;
&lt;br /&gt;
==Test==&lt;br /&gt;
Auslesen des Flash-Speichers des controllers, hinter &#039;&#039;-p&#039;&#039; den Typ des Controllers (hier ATmega 328P) angeben:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo /usr/local/bin/avrdude -c linuxspi -p m328p -P /dev/spidev0.0 -U flash:r:&amp;quot;/dev/null&amp;quot;:r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Typische Fehler==&lt;br /&gt;
Der Fehler kann sein&lt;br /&gt;
*unvollständige Installation des Betriebssystem, wie Treiber für SPI nicht aktiv&lt;br /&gt;
*falsche Bedienung Programmiertool &#039;&#039;avrdude&#039;&#039; bspw. ohne root-Rechte (&#039;&#039;sudo&#039;&#039;)&lt;br /&gt;
*Verdrahtungsfehler bspw. Widerstand an der Reset-Leitung falsch&lt;br /&gt;
&lt;br /&gt;
avrdude schreibt auch Fehlermeldungen von Folgefehlern wie &#039;&#039;avrdude initialization failed&#039;&#039; was auf einen Fehler&lt;br /&gt;
in der Verdrahtung deutet, die eigentlich Fehlermeldung allerdings einige Zeilen früher genannt&lt;br /&gt;
wird: &amp;quot;Unable to open SPI Port&amp;quot;. Man tut also gut daran, die Ausgaben von avrdude komplett zu lesen.&lt;br /&gt;
&lt;br /&gt;
==Zugriff auf SPI scheitert==&lt;br /&gt;
Die SPI-Schnittstelle liegt wie alle Geräte im Verzeichnis &#039;&#039;/dev/&#039;&#039; , am besten mit &#039;&#039;ls /dev/&#039;&#039; überprüfen. Findet sich dort kein &#039;&#039;spidev0.0&#039;&#039; ist der SPI-Treiber/module nicht aktiv oder nicht installiert. Siehe dazu Abschnitt SPI oben.&lt;br /&gt;
&lt;br /&gt;
Für den Zugriff auf die SPI - Schnittstelle sind root-Rechte erforderlich. &#039;&#039;avrdude&#039;&#039; ist also von root - login oder mit vorangestellten &#039;&#039;sudo&#039;&#039; zu starten. &lt;br /&gt;
&lt;br /&gt;
==Der µC meldet sich nicht==&lt;br /&gt;
Oft sind fehlende oder falsche elektrischen Verbindungen dafür verantwortlich. Man sollte jetzt die Spannungen&lt;br /&gt;
zwischen Vcc und GND resp. zwischen Avcc und GND an Controller messen. Die sollten 3.3V betragen. Muss man den Controller mit 5V betreiben&lt;br /&gt;
ist auf diese Spannung zu prüfen und die Pegelwandler (levelshifter) zwischen Controller und RasPi. Die 5V sind an der GPIO-Leiste des RasPi&#039;s meist etwas geringer. An der Reset-Leitung sollte im Normalfall die Betriebsspannung (3v3) anliegen, nur während der Programmierung&lt;br /&gt;
misst man hier 0V. Die anderen Verbindungen klingelt man im stromlosen Zustand durch oder prüft die Signale mit einem Scope. (Verweis auf Checkliste.)&lt;br /&gt;
&lt;br /&gt;
=JTAG dongle/ FPGA-programmer=&lt;br /&gt;
Über JTAG sind auch FPGA&#039;s und deren Firmware-PROMs programmierbar. Als Programmier-tool ist hierfür die OpenOCD-Software einsetzbar. Für JTAG wird nicht die SPI-Schnittstelle, sondern &amp;quot;normale&amp;quot; GPIO-Pins genutzt. &lt;br /&gt;
&lt;br /&gt;
Achtung: der RasPi unterstützt nur 3V3 Pegel, die JTAG-Schnittstelle auf den FPGA&#039;s kann je nach Beschaltung auch andere Spannungspegel beispielsweise 2V5 erfordern.&lt;br /&gt;
&lt;br /&gt;
=Links/Quellen=&lt;br /&gt;
*Deutschsprachige Beschreibung RasPi AVR programmer [http://www.forum-raspberrypi.de/Thread-tutorial-raspberry-als-programmiergeraet-fuer-atmel-%C2%B5controller]&lt;br /&gt;
*Englischsprachige Beschreibung der avrdude Variante [https://gist.github.com/akavel/8832366]&lt;br /&gt;
--&lt;br /&gt;
*Website OpenOCD (JTAG-Software): [http://openocd.sourceforge.net/about/]&lt;br /&gt;
--&lt;br /&gt;
*Elektrische Kenn- und Grenzwerte GPIOs: [http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Controller_an_230V&amp;diff=80949</id>
		<title>Controller an 230V</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Controller_an_230V&amp;diff=80949"/>
		<updated>2014-01-18T23:30:07Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: /* Sparsames Trafonetzteil für Dauerbetrieb */: Dauerkurzschlussfeste Trafos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:Lupin]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Da immer wieder mal die Frage aufkommt, wie man eine eigene Schaltung direkt am Netz betreiben kann soll hier ein Artikel entstehen, welcher die Möglichkeiten zur Erzeugung einer angemessenen Gleichspannung aufzeigt.&lt;br /&gt;
&lt;br /&gt;
Aber zuerst eine Warnung die ernst genommen werden sollte (!!!):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Arbeiten an Netzspannung ist lebensgefährlich!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Deshalb sollte man nie direkt an Netzspannung arbeiten, wenn überhaupt nur mit entsprechenden Schutzeinrichtungen (z.&amp;amp;nbsp;B. Trenntrafo) und dann auch nur wenn man über die nötige Erfahrung verfügt. Aber grundsätzlich ist Vorsicht geboten.&lt;br /&gt;
&lt;br /&gt;
Wer nicht ganz genau weiss womit er es zu tun hat sollte lieber eine sichere Lösung verwenden wie z.&amp;amp;nbsp;B. die Stromversorgung aus einem VDE zugelassenen Trafo oder fertige Steckernetzteile.&lt;br /&gt;
&lt;br /&gt;
== Stecker(schalt)netzteil ==&lt;br /&gt;
&lt;br /&gt;
Die sicherste Lösung ist die Verwendung eines Steckernetzteils welches eine galvanisch getrennte Gleichspannung bereit stellt. Wer ganz auf Nummer Sicher gehen will achtet auf das GS (Geprüfte Sicherheit) Kennzeichen auf dem Netzteil:&lt;br /&gt;
&lt;br /&gt;
[[Bild:SteckerNetzteile.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
Zwei Steckernetzteile. Das Linke hat eine ungeregelte Ausgangsspannung (Trafo-&amp;gt;Gleichrichtung-&amp;gt;Siebung). Das Rechte hat eine einstellbare Ausgangsspannung. Auch bei einstellbarer Ausgangsspannung kann diese geregelt oder ungeregelt sein.&lt;br /&gt;
&lt;br /&gt;
Die Spannung wird meist über Hohlstecker zur Schaltung geführt.&lt;br /&gt;
&lt;br /&gt;
Billige Steckernetzteile geben eine ungeregelte Spannung aus, sie verändert sich mit der Last. In diesem Falle ist keine direkte Versorgung der Schaltung möglich und die Eingangsspannung sollte mit einen Spannungsregler geregelt werden:&lt;br /&gt;
&lt;br /&gt;
[[Bild:V_Regler.gif]]&lt;br /&gt;
&lt;br /&gt;
== Trafonetzteil ==&lt;br /&gt;
&lt;br /&gt;
Ein Trafonetzteil besteht aus einem Netztrafo, einer Gleichrichtung, einer Siebung und einer Regelung.&lt;br /&gt;
&lt;br /&gt;
* Der Netztrafo stellt eine galvanisch getrennte Wechselspannung am Ausgang bereit, diese Spannungs ist bedeutend kleiner als die Eingangsspannung.&lt;br /&gt;
&lt;br /&gt;
* Die Gleichrichtung wandelt diese Wechselspannung in eine Gleichspannung. Die Siebung entfernt die restlichen Wechselspannungsanteile (nach einer Vollbrückengleichrichtung beträgt die Wechselspannungsfrequenz 100 Hz).&lt;br /&gt;
&lt;br /&gt;
* Die Regelung kann u.U. auch weggelassen werden, wenn keine genaue Ausgangsspannung gefordert ist. Aber ohne Regelung würde die Ausgangsspannung je nach Belastung schwanken. Die Regelung sorgt dafür, dass unabhängig von der Belastung des Netzteils die gewünschte Ausgangsspannung konstant am Ausgang anliegt.&lt;br /&gt;
&lt;br /&gt;
Die Ausgangsspannung des Trafos ist immer höher als die Ausgangsspannung des Reglers, da der Regler einen gewissen Arbeitsbereich benötigt, die sogenannte Dropout-Spannung. &lt;br /&gt;
&lt;br /&gt;
Die Leistung, die durch den Regler in Wärme umgesetzt wird errechnet sich wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_{Verlust}=(U_{Ein}-U_{Aus}) \cdot I_{Aus}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 10 Volt am Eingang des Spannungsreglers, einer Ausgangsspannung von 5 Volt und einem Strom von 1 Ampere ergibt das eine Verlustleistung von 5 Watt. Hört sich nicht viel an, allerdings beträgt die Ausgangsleistung auch nur 5 Watt. Das Ergibt einen Wirkungsgrad von 50%. Dazu kommen aber noch Verluste welche im Transformator entstehen. Der Spannungsregler braucht dann einen [[Kühlkörper]].&lt;br /&gt;
&lt;br /&gt;
[[Bild:Trafont.gif]]&lt;br /&gt;
&lt;br /&gt;
Ein Trafonetzteil hat auch den Nachteil, daß es durch den schweren Eisenkern nicht sehr handlich ist.&lt;br /&gt;
&lt;br /&gt;
Es gibt Printtransformatoren, welche sich auf die Leiterplatte löten lassen. So ist es möglich das Netzteil in die eigene Schaltung zu integrieren. Der Anschluss der 230V Netzspannung birgt allerdings eine Gefahr.&lt;br /&gt;
&lt;br /&gt;
=== Sparsames Trafonetzteil für Dauerbetrieb ===&lt;br /&gt;
&lt;br /&gt;
Möchte man eine besonders sparsame Stromversorgung aufbauen, welche eine sehr kleine, sparsame Schaltung das ganze Jahr über betreiben soll, empfiehlt es sich, neben der Beachtung der Konzepte zum Stromsparen per [[Sleep Mode]] und [[Ultra low power]], von den bekannten Minitrafos mit nur 0,5-1VA zwei statt einem zu nutzen. Dabei werden jeweils Primär- und Sekundärwicklung in Reihe geschaltet. Warum?&lt;br /&gt;
&lt;br /&gt;
Weil diese Trafos auf Kante dimensioniert sind, um Material und Bauvolumen zu sparen und bei Nennspannung schon ordentlich in die magnetische Sättigung gehen. Dabei entstehen große Verluste durch Stromspitzen des Magnetisierungsstroms auf der Primärseite. Eine genauere Erklärung findet man im Artikel [[Transformatoren und Spulen]]. Bei der Reihenschaltung sieht jeder Trafo nur die halbe Spannung, damit kommt er nicht so stark in die Sättigung und es wird deutlich weniger Energie sinnlos verbraucht. Dazu noch einen [[Versorgung aus einer Zelle#Vier Mignonzellen mit LowDrop-Linearregler | stromsparenden Spannungsregler]] ala LP2950 und das Ganze braucht weniger als 0,5W.&lt;br /&gt;
In diesem [http://www.mikrocontroller.net/topic/191871#1875697 Forumsbeitrag] wure exemplarisch ein solcher Trafo vermessen.&lt;br /&gt;
&lt;br /&gt;
*Kanal 1 Eingangsstrom&lt;br /&gt;
*Kanal 2 Eingangsspannung&lt;br /&gt;
*Kanal M Leistung&lt;br /&gt;
&lt;br /&gt;
Einmal mit 120V Eingangsspannung (163mW) und einmal mit 230V (1550mW), die Unterschiede sind immens. Selbst wenn man die Verluste bei 120V bei der Reihenschaltung von zwei Stück verdoppelt, erreicht man in Summe eine Verringerung der Leerlaufverluste um den Faktor fünf! Die eingesparte Leistung von ca. 1224mW bedeutet bei Dauerbetrieb einen Verbrauch von ca. 10,7 kWh pro Jahr, was ca. 2,5 Euro entspricht. Damit sind die Kosten für den 2. Trafo nach etwas mehr als einem Jahr schon wieder kompensiert und man spart in den nachfolgenden Jahren das Geld.&lt;br /&gt;
&lt;br /&gt;
==== Von selbst sparsame Trafos (EuP) ====&lt;br /&gt;
Inzwischen (2013) gibt es auch fertige Trafos, welche im Leerlauf so sparsam sind, dass sie die EU-Norm einhalten. z.B. vom Hersteller HAHN die Serie EUP&amp;lt;ref&amp;gt;[http://www.hahn-trafo.com/katalog/10.05.11_Ha_EuP_GB.pdf HAHN Katalogauszug EUP] Abgerufen am 17. April 2013&amp;lt;/ref&amp;gt;, von BLOCK die Serie VBE&amp;lt;ref&amp;gt;[http://www.block-trafo.de/assets/data/409/28823/block_direkt__2012_13__3mb_.pdf BLOCK Katalog S. 4 und S. 42] Abgerufen am 17. April 2013&amp;lt;/ref&amp;gt;. Diese haben nur einen Leerlaufverbrauch von 0,4W und eigenen sich somit hervorragend für sparsame und langlebige Schaltungen.&lt;br /&gt;
&lt;br /&gt;
==== Dauerkurzschlussfeste Trafos ====&lt;br /&gt;
Printtrafos im Leistungsbereich bis vielleicht 4 VA werden heutzutage meist als dauerkurzschlussfeste (auch unbedingt kurzschlussfest genannte) Trafos angeboten.&lt;br /&gt;
Der Trick 2 Trafos in Reihe zu schalten um Energie zu sparen, kann bei diesen zu einem Problem führen: Die Kurzschlussfestigkeit wird durch einen höheren Widerstand der Sekundärwindung erreicht. Kommt es zu einem Kurzschluss, begrenzt der Widerstand den Strom und die insg. abgerufene Leistung bleibt unterhalb des thermischen Limits. Werden nun 2 dieser Sekundärwindungen in Reihe geschaltet, verdoppelt sich der Gesamtwiderstand. Die erreichte Spannung bei Nennlast bleibt dadurch deutlich unter der angegebenen Nennspannung der Trafos. Bei niedriger Last läuft dagegen die Spannung weit über diesen Wert hoch. Vor allem für Schaltungen mit stark schwankender Leistungsaufnahme wird es dadurch schwer passende Trafos zu wählen.&lt;br /&gt;
&lt;br /&gt;
Dem kann man begegnen, in dem man 2 Trafos für die doppelte der gewünschten Nennspannung verwendet. Die Primärwindungen werden wie bisher in Reihe geschaltet, die Sekundärwindungen dagegen parallel. Damit bleibt der Spareffekt bestehen, die Varianz der Ausgangsspannung wird aber deutlich reduziert.&lt;br /&gt;
&lt;br /&gt;
== Versorgung über Vorwiderstand/Kondensator ==&lt;br /&gt;
&lt;br /&gt;
Wenn nur sehr kleine Ausgangsströme benötigt werden, so kommt die Verwendung eines einfachen Netzteils in Frage, welches einen Vorwiderstand verwendet um die Netzspannung herabzusetzen. Da es sich bei der Netzspannung um eine Wechselspannung handelt, eignen sich neben rein ohmschen Widerständen auch Kondensatoren und Spulen als Vorwiderstand. Praktisch werden Spulen jedoch nie verwendet, weil diese zu groß wären. Da aus Energiegründen meist Kondensatoren verwendet werden, spricht man auch umgangssprachlich vom Kondensatornetzteil.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Capnt.gif | right | thumb | 500px | 5V / 10mA Kondensatornetzteil]]&lt;br /&gt;
&lt;br /&gt;
Der Kondensator C1 bildet hier den kapazitiven Vorwiderstand für unser Kondensatornetzteil, seine Impedanz bestimmt den Strom. Der Vorteil gegenüber einem Widerstand ist, dass keine Wirkleistung erzeugt wird, sprich es entsteht keine Wärme. Wenn wir alle Spannungsabfälle durch die übrigen Bauteile vernachlässigen, können wir einfach mit...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{X_{C}= {1 \over {2 \pi \cdot f \cdot C}} }&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{X_{C1}= {1 \over {2 \pi \cdot 50Hz \cdot C}} }&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...die Impedanz des Kondensators an 50 Hz Wechselspannung errechnen (wir vernachlässigen den ohmschen Reihenwiderstand des Kodensators und betrachten seinen Blindwiderstand als Impedanz).&lt;br /&gt;
&lt;br /&gt;
Für 10 mA bei 230V brauchen wir einen Ersatzwiderstand von:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathrm{R_{Ersatz}= {230V - 12V \over 10mA} = {22k \Omega} }&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ergibt nach Gleichsetzen von X(C1) = 22 kΩ und Umstellen nach C eine rechnerische Kapazität von 145 nF. Eine Kapazität von 150nF würde gut passen und ist als Standardwert verfügbar. Mit der Wahl eines etwas größeren Kondensators kommen wir rechnerisch über 10mA und haben dadurch ein wenig mehr Luft nach oben. Der Kondensator als kapazitiver Vorwiderstand erzeugt keine Wärme, nur etwas Phasenverschiebung zwischen Strom und Spannung. Ein 22-kΩ-Widerstand würde 2,2 W Verlustleistung als Wärme erzeugen. Der Rest der Schaltung erklärt sich relativ einfach.&lt;br /&gt;
&lt;br /&gt;
* Sicherung F1 soll vor möglichen Schwelbränden im Falle eines Kurzschlusses schützen. Brandsichere Widerstände R1 und R2 erfüllen den gleichen Zweck.&lt;br /&gt;
* R1 und R2 begrenzen zusammen den Einschaltstrom, sollte die Schaltung beim Sinusscheitelpunkt angeschlossen werden (Eingangsspannung kurzzeitig 325V). Es wurden zwei Widerstände verwendet, damit sich der Spannungsfall über beide Widerstände aufteilt, denn normale Widerstände sind nur bis 200 V belastbar. Der kurzzeitig hohe Ladestrom, der nur von diesen Widerständen begrenzt wird, wird von C2 und D1 aufgenommen.&lt;br /&gt;
* R3 und R4 dienen als Entladewiderstände für C1, damit nach Trennen vom Netz keine gefährliche Ladung im Kondensator verbleibt. Auch hier werden zwecks Spannungsaufteilung zwei Widerstände verwendet.&lt;br /&gt;
* Der Brückengleichrichter B1 richtet die Wechselspannung in eine Gleichspannung.&lt;br /&gt;
* Die [[Diode#Z-Diode | Z-Diode]] D1 begrenzt die maximale Eingangsspannung für IC1. Sie muss lediglich so gewählt werden, dass der Spannungsregler noch sauber arbeiten kann.&lt;br /&gt;
* Die Eingangsspannung für IC1 wird durch C2 und C3 gepuffert. Die Wechselspannungsanteile der gleichgerichteten Spannung sind dadurch sehr gering.&lt;br /&gt;
* IC1 ist der Spannungsregler, er erzeugt die 5V Ausgangsspannung. C4 soll ein Schwingen des Reglers verhindern.&lt;br /&gt;
* IC1 kann alternativ auch mit einem stromsparenden Regler wie z.B LP2950 bestückt werden, dadurch stehen 3..5mA mehr für die Schaltung zur Verfügung, welche sonst vom 7805 verbraucht werden.&lt;br /&gt;
&lt;br /&gt;
;Achtung!: Es ist wichtig zu wissen, daß zwischen den Punkten &amp;quot;+5V&amp;quot; und &amp;quot;GND&amp;quot; im Normalfall nur ein Potential von 5 Volt anliegt und der Strom auch durch die Schaltung begrenzt wird. Aber das Potential gegen Erde ist immer noch lebensgefährlich, da bei dieser Netzteilart keine galvanische Trennung stattfindet. Solch eine Schaltung &#039;&#039;&#039;muss&#039;&#039;&#039; man in ein Gehäuse verbauen, welches vor Berührung mit leitfähigen Teilen schützt (Schutzklasse I oder II).&lt;br /&gt;
&lt;br /&gt;
{{Warnung|;Warnung!: Wirklich niemals (!) leitfähige Teile einer Schaltung berühren, die vom Stromnetz nicht galvanisch getrennt sind!}}&lt;br /&gt;
&lt;br /&gt;
Ein halbwegs sicherer Umgang mit der Schaltung ist dann möglich, wenn man über einen Trenntrafo eine galvanische Trennung zum Netz herstellt und hinter dem Trenntrafo mit der Schaltung arbeitet.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.grosse-elektronik.de/das-elko/trlosestr/index.html Stromversorgung über Vorwiderstand oder Kondensator ausführlich erklärt]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/public/schaerer/cpowsup.htm Direkte 230V Versorgung im ELKO]&lt;br /&gt;
* [http://www.trifolium.de/netzteil/kap13.html Auschnitt auch &amp;quot;Das Netzteil- und Konverterbuch&amp;quot;]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/192090?goto=new#new Forenbeitrag: Weitbereichslinearregler mit kleinem Ausgangsstrom]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/194814#new Forenbeitrag: Weitbereichslinearregler mit kleinem Ausgangsstrom, weitere Vorschläge]&lt;br /&gt;
&lt;br /&gt;
=== Besser: Querregler ===&lt;br /&gt;
[http://commons.wikimedia.org/wiki/File%3ACapacitive_Power_Supply.png]&lt;br /&gt;
Die Verwendung von &#039;&#039;Längsreglern&#039;&#039; (etwa 78L05) ist bei dieser Netzteilart ungünstig, da eine Vorregelung per Zener-Diode erforderlich ist.&lt;br /&gt;
Besser ist die Verwendung eines &#039;&#039;Querreglers&#039;&#039; (etwa TL431). Dessen Vorwiderstand wird so dimensioniert, dass die Spannungsschwankungen am Ladekondensator bei maximalem Entnahmestrom gerade ausgeglichen werden können. In diesem Fall erscheinen 150 Ω angemessen, für 1,5 V Ripplespannung an C2. Auf diese Weise erhält man einen Low-Drop-Spannungsregler mit – ohnehin erforderlichem – konstanten Stromverbrauch.&lt;br /&gt;
&lt;br /&gt;
Merke: Die Wirkleistungsaufnahme solcher Netzteilschaltungen ist proportional zur Ladespannung am Elko C2. Daher ist diese möglichst niedrig anzusetzen.&lt;br /&gt;
Kondensatornetzteile sind eher &#039;&#039;Stromquellen&#039;&#039; als &#039;&#039;Spannungsquellen&#039;&#039;, was bei der Schaltungsdimensionierung zu beachten bzw. auszunutzen ist.&lt;br /&gt;
&lt;br /&gt;
=== Relais-Schaltungen ===&lt;br /&gt;
Derartige Netzteile werden gern zur Ansteuerung von Relais eingesetzt. Um die Stromaufnahme und damit den Kondensator C1 möglichst klein zu halten (Kostenfaktor), werden gern 24-V-Typen benutzt, die sich mit 10 .. 20 mA Anzugstrom begnügen. Das ergibt aber trotzdem 0,25 .. 0,5 W Leistungsaufnahme, die von einem Konstantspannungsnetzteil permanent zur Verfügung gestellt wird und damit stets irgendwo verheizt wird, auch wenn das Relais nicht arbeitet.&lt;br /&gt;
&lt;br /&gt;
Eine Lösung des Problems ist die Umschaltung der Ausgangsspannung an C2. Damit kann die Relaisspule parallel zu C2 betrieben werden und wird zum Ausschalten durch einen Transistor mit Z-Diode am Kollektor gebrückt (ein selbstleitender SFET oder MOSFET liegt da nahe). Hauptsache, das Relais fällt bei – angenommen – 4 V auch tatsächlich ab. Die Freilaufdiode entfällt. Die Steuerschaltung (angenommen für 3 V) wird in diesem Fall mit einem Low-Drop-Längsregler mit genügend großem Eingangsspannungsbereich versorgt.&lt;br /&gt;
&lt;br /&gt;
[http://commons.wikimedia.org/wiki/File:Capacitive_power_supply_%2B_relay.png]&lt;br /&gt;
Eine andere Lösung verwendet eine Reihenschaltung sogar mehrerer Relaiswicklungen, die jeweils per Überbrückung abgeschaltet werden. In diesem Fall hat C2 bei höherer Spannungsfestigkeit eine vergleichsweise kleine Kapazität, da das Ripple größer ausfallen darf, da die Selbstinduktivität der Relaiswicklung(en) für Konstantstrom sorgt und C2 „leersaugt“.&lt;br /&gt;
&lt;br /&gt;
== Schaltnetzteil ==&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteile sind heutzutage weit verbreitet, da sie gegenüber konventionellen Netzteilen eine kompaktere Bauweise, einen höheren Wirkungsgrad und geringere Produktionskosten aufweisen.&lt;br /&gt;
&lt;br /&gt;
Zur Versorgung einer eigenen Schaltung eignen sich am besten Steckernetzteile (auch &amp;quot;Wandwarzen&amp;quot; genannt :)) welche eine mehr oder weniger gut geregelte Ausgangsspannung bereit stellen.&lt;br /&gt;
&lt;br /&gt;
Um das Schaltnetzteil direkt in eine eigene Schaltung zu integrieren, ist die einzige Möglichkeit die Verwendung von fertigen AC/DC Modulen welche meist relativ teuer sind (im Vergleich zu Steckernetzteilen). Dafür bieten Fertigmodule meist gut spezifizierte Betriebsparameter und sind bei namhaften Herstellern auch über mehrere Jahre hinweg lieferbar. Ausserdem sind die leicht anwendbar, man muss kein Schaltnetzteilprofi sein.&lt;br /&gt;
&lt;br /&gt;
Als Alternative zum Kauf von fertigen Schaltnetzteilen soll im folgenden ein 230VAC-&amp;gt;5VDC Netzteil vorgestellt werden. Allerdings rate ich davon ab solch ein Netzteil in Umlauf zu bringen. Das Ganze dient eher als proof of concept und natürlich wurde das Netzteil nicht nach den geltenden Sicherheits- und EMV-Bestimmungen geprüft. Die Schaltung ist ausschließlich für eigene Experimente/Schaltungen gedacht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier die ZIP Datei mit der EAGLE .brd- und .sch-Datei:&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/9/94/Tiny_SMPS_eagle.zip Eagle Dateien downloaden]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spezifikation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Eingangsspannung 85VAC bis 265VAC @ 50-400 Hz&lt;br /&gt;
* Ausgangsspannung 5 Volt / 1 Ampere&lt;br /&gt;
&lt;br /&gt;
TODO: Ein paar mehr Messungen durchführen...&lt;br /&gt;
&lt;br /&gt;
Eingangsspannung kann auch unter 85VAC liegen (siehe Anmerkungen).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schaltplan&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Smps5v_sch.gif]]&lt;br /&gt;
&lt;br /&gt;
Der Schaltplan im Detail (von links nach rechts):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Primärseite&#039;&#039;&lt;br /&gt;
* F2 ist eine träge Sicherung (1 Ampere). Sie sichert die Schaltung ab, sollte auf der Primärseite ein Kurzschlussstrom fließen&lt;br /&gt;
* Der Brückengleichrichter richtet die Netzspannung gleich&lt;br /&gt;
* C9, L1, C2 bilden einen Pi-Filter. Über den Kondensatoren liegt bei 230VAC Eingangsspannung eine Spannung von ungefähr 310 Volt an&lt;br /&gt;
* C5, R1, D3 bilden ein [[Snubber]]-Netzwerk (Klemmschaltung) - dieses Netzwerk &amp;quot;verbrät&amp;quot; die Leistung welche beim Abschalten des Leistungstransistors in die Primärwicklung induziert wird (da sich die Spannungsverhältnisse umkehren)&lt;br /&gt;
* Der Regler-IC ohne Bezeichnung ist ein TNY264 - er integriert eine fortschrittliche [[PWM]]-Regelung (dabei handelt es sich um eine PWM mit variabler Frequenz und Frequenz-Jitter), eine primärseitige Strombegrenzung, einen Fehlereingang und die Erzeugung seiner eigenen Betriebsspannung aus der Netzspannung&lt;br /&gt;
* Der Trafo T1 ist ein Sperrwandlertrafo mit Luftspalt (Kern E16)&lt;br /&gt;
* C8 unterdrückt hochfrequente EMV Störungen - Wichtig: Der Kondensator muss der Klasse Y1 entsprechen um die Sicherheit zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sekundärseite&#039;&#039;&lt;br /&gt;
* D2 dient als Gleichrichterdiode&lt;br /&gt;
* C4, L2, C3 bilden einen weiteren Pi-Filter zur Filterung der Ausgangsspannung&lt;br /&gt;
* Über [[Diode#Z-Diode | Zener Diode]] D1, R2 und Optokoppler OK1 wird die Ausgangsspannung zum Regler IC zurück gekoppelt. Der Regler versucht einen konstanten Strom durch den Transistor in OK1 fließen zu lassen, dadurch wird auf der Sekundärseite eine konstante Ausgangsspannung erzeugt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Zwischen L und N hätte man auch noch einen Varistor zur Überspannungsbegrenzung und einen X Kondensator (nach der Sicherung!) zur Unterdrückung von HF schalten können&lt;br /&gt;
* Zur Verbesserung der EMV hätte man auch noch eine Netzdoppeldrossel verwenden können. Diese Drossel würde Gegentaktstörungen verringern. Allerdings lässt sich auch mit einer einfachen Drossel eine ausreichende EMV erreichen (ob das bei dieser Schaltung der Fall ist weiss ich nicht und würde ich bezweifeln)&lt;br /&gt;
* Bei Versuchen am Labornetzteil stellte sich heraus, dass das Netzteil schon bei 50VDC Versorgung funktioniert. Einen Belastungstest habe ich bei dieser Spannung nicht durchgeführt, aber dadurch hat man die Möglichkeit das Netzteil gefahrlos zu erproben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Layout&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Smps5v_brd.gif]]&lt;br /&gt;
&lt;br /&gt;
Zum Layout gibt es nicht viel zu sagen. Abstände wurden so groß wie möglich gehalten und der größte Teil des Layouts wurde mit großzügigen Kupferflächen realisiert, um eine gute Wärmeableitung und eine niederohmige Anbindung zu erhalten. Ob das Layout VDE-konform ist kann ich nicht sagen. Der Abstand zwischen Primär- und Sekundärseite sollte allerdings groß genug sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stückliste&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Netzteil wurde so gestaltet, dass alle Bauteile bei Farnell bestellt werden können. Nur die Platine muss man sich natürlich selbst ätzen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;stueckliste&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Stromlauf&lt;br /&gt;
! Bestellnummer&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (1 Stück)&lt;br /&gt;
|-&lt;br /&gt;
| F2&lt;br /&gt;
| 3030076&lt;br /&gt;
| Sicherung - 1A, Flink&lt;br /&gt;
| 0,62 €&lt;br /&gt;
|-&lt;br /&gt;
| B1&lt;br /&gt;
| 1467468&lt;br /&gt;
| DF04M Brückengleichrichter - 1.5A, 400V&lt;br /&gt;
| 0,21 €&lt;br /&gt;
|-&lt;br /&gt;
| C9 C2&lt;br /&gt;
| 1165626&lt;br /&gt;
| Kondensator Vishay - 4.7µF, 400V&lt;br /&gt;
| 0,23 €&lt;br /&gt;
|-&lt;br /&gt;
| L1&lt;br /&gt;
| 1077038&lt;br /&gt;
| Drossel - 2.2mH&lt;br /&gt;
| 1,25 €&lt;br /&gt;
|-&lt;br /&gt;
| IC1&lt;br /&gt;
| 9921320&lt;br /&gt;
| TNY264PN&lt;br /&gt;
| 1,65 €&lt;br /&gt;
|-&lt;br /&gt;
| D3&lt;br /&gt;
| 1299306&lt;br /&gt;
| SF18G Diode - 1A, 600V&lt;br /&gt;
| 0,23 €&lt;br /&gt;
|-&lt;br /&gt;
| C5&lt;br /&gt;
| 1141794&lt;br /&gt;
| Kondensator Vishay - 2.2nF, 1kV&lt;br /&gt;
| 0,22 €&lt;br /&gt;
|-&lt;br /&gt;
| R1&lt;br /&gt;
| &lt;br /&gt;
| Widerstand - 1/4W, 200k Ohm&lt;br /&gt;
| 0,05 €&lt;br /&gt;
|-&lt;br /&gt;
| C8&lt;br /&gt;
| 3531971&lt;br /&gt;
| Kondensator X1/Y1 Murata - 1nF, 4kV&lt;br /&gt;
| 0,31 €&lt;br /&gt;
|-&lt;br /&gt;
| T1&lt;br /&gt;
| 1214650&lt;br /&gt;
| Trafo Myrra 74094&lt;br /&gt;
| 4,20 €&lt;br /&gt;
|-&lt;br /&gt;
| D2&lt;br /&gt;
| 9907637&lt;br /&gt;
| Schottky Diode STPS2L60 - 2A&lt;br /&gt;
| 0,30 €&lt;br /&gt;
|-&lt;br /&gt;
| C4 C3&lt;br /&gt;
| 1219462&lt;br /&gt;
| Kondensator Panasonic - 470µF, 16V&lt;br /&gt;
| 0,37 €&lt;br /&gt;
|-&lt;br /&gt;
| L2&lt;br /&gt;
| 1077049&lt;br /&gt;
| Drossel - 10µH&lt;br /&gt;
| 1,25 €&lt;br /&gt;
|-&lt;br /&gt;
| D1&lt;br /&gt;
| 1097231&lt;br /&gt;
| Zener BZX79-C3V9 - 3.9 Volt, 500mW&lt;br /&gt;
| 0,11 €&lt;br /&gt;
|-&lt;br /&gt;
| R2&lt;br /&gt;
| &lt;br /&gt;
| Widerstand - 1/4W, 100Ω&lt;br /&gt;
| 0,05 €&lt;br /&gt;
|-&lt;br /&gt;
| OK1&lt;br /&gt;
| 9707700&lt;br /&gt;
| Optokoppler PC817&lt;br /&gt;
| 0,36 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Macht zusammen 11,88€. Das steht im grunde im keinen Verhältnis zu einem gekauften 5V/1A Netzteil, denn das kostet in etwa das Gleiche und ist bereits fertig aufgebaut und nach gültigen Normen geprüft. Die Eigenentwicklung solcher Netzteile lohnt sich nur in sehr großen Stückzahlen von 10.000 Stück und mehr und wenn man auf dem Gebiet viel Erfahrung hat. &lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:1. Wettbewerb]]&lt;br /&gt;
[[Category:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=80876</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=80876"/>
		<updated>2014-01-16T00:29:00Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Änderung 80851 von Tkroth (Diskussion) rückgängig gemacht: Benutzer Tkroth ist der Betreiber von DES, die gelöschten Infos sind wichtig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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.&amp;amp;nbsp;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;
&#039;&#039;&#039;Diese Seite kann nur von angemeldeten Benutzern bearbeitet werden!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== AATiS ===&lt;br /&gt;
Homepage: http://www.aatis.de&lt;br /&gt;
&lt;br /&gt;
* Arbeitskreis Amateurfunk und Technik in der Schule e.V.&lt;br /&gt;
* Bausätze speziell auch für Elektronik-Anfänger, Schüler&lt;br /&gt;
* Literatur, Seminare für Lehrer &lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage: http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;kein&#039;&#039;&#039; Online-Shop!&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;
&amp;lt;!--&lt;br /&gt;
=== Adapterprofi ===&lt;br /&gt;
Homepage: http://www.adapterprofi.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Gehäuse, Netzteile&lt;br /&gt;
* Viele unterschiedliche HF-Adapter&lt;br /&gt;
* Seite aktuell nicht erreichbar (10.12.2011) ist wohl tot&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AK Modul Bus Computer GmbH ===&lt;br /&gt;
Homepage: http://www.ak-modul-bus.com/stat/produkte.html&lt;br /&gt;
&lt;br /&gt;
* Interfaces, Messmodule, Funktionsmodelle, Experimentiersysteme&lt;br /&gt;
* Entwicklungssysteme, Baugruppen, Elektor, Zubehör, Bauelemente&lt;br /&gt;
* Software, Lernpakete, Bücher, Sonderposten&lt;br /&gt;
&lt;br /&gt;
=== Aliexpress ===&lt;br /&gt;
Homepage: http://www.aliexpress.com&lt;br /&gt;
&lt;br /&gt;
* Allgeminer Market-Store aus China&lt;br /&gt;
* Günstige Arduinos, Adapterplatinen, Miniboards, etc.&lt;br /&gt;
* Vorsicht vor Fake-Transistoren und sehr günstigen Einzelbauteilen, die müssen nicht immer Original sein&lt;br /&gt;
* Zahlung: Per Kreditkarte, Absicherung über Aliexpress. Der Kaufpreis wird erst nach Bestätigung des Erhalts der Ware an den Lieferanten freigegeben&lt;br /&gt;
* Lieferzeit: Ca. 2-4 Wochen (kommt ja auch aus China oder Hongkong)&lt;br /&gt;
* Versandkosten: oft keine, wird im Angebot angegeben&lt;br /&gt;
* Zoll: normalerweise fällt für elektronische Bauteile kein Zoll an (alles bis 150€ ist zollfrei)&lt;br /&gt;
* Umsatzsteuer: ab 22€ (inkl. Versand) sind 19% Umsatzsteuer auf den Gesamtpreis beim Zoll zu zahlen (siehe www.zoll.de)&lt;br /&gt;
&lt;br /&gt;
=== Allpax ===&lt;br /&gt;
Homepage: http://www.allpax.de&lt;br /&gt;
&lt;br /&gt;
* Liefert auch an Privathaushalte&lt;br /&gt;
* Keine Elektronik an sich, aber ggf. nützliches Zubehör: Größeres, übersichtliches Sortiment an ESD-Beuteln und -Folien, offen und mit Zippverschluss, Pink Poly und Metallisiert (High Shield). Preislich über Farnell, dafür findet man sofort, was man sucht...&lt;br /&gt;
* außerdem Ultraschallreiniger, Waagen und Folienschweißgeräte, sowie viel Fachfremdes&lt;br /&gt;
* Versandkosten: 8,33€ nach Deutschland, diverse EU-Länder 17,85€, Schweiz 34,51€; Versandkostenfrei in D ab 178,50€&lt;br /&gt;
* Gewährt scheinbar auch Privatkunden die Zahlung per Rechnung; bei Bankeinzug 2% Rabatt, bei Vorkasse und Abholung 3%&lt;br /&gt;
&lt;br /&gt;
=== AME-Engineering ===&lt;br /&gt;
Homepage: http://www.ame-engineering.de&lt;br /&gt;
&lt;br /&gt;
* Hochfrequenz-Spezialitäten, Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Amidon ===&lt;br /&gt;
Homepage: http://www.amidon.de&lt;br /&gt;
&lt;br /&gt;
* Sehr großes Sortiment, vorallem für seltene Bauteile, z.&amp;amp;nbsp;B. Dioden&lt;br /&gt;
&lt;br /&gt;
=== Andy&#039;s Funkladen ===&lt;br /&gt;
Homepage: http://www.andyfunk.de&lt;br /&gt;
&lt;br /&gt;
* Alles für Amateur- und CB-Funk&lt;br /&gt;
* Bauteile und Gehäuse&lt;br /&gt;
&lt;br /&gt;
=== Anvilex ===&lt;br /&gt;
Homepage: http://shop.anvilex.com/index.html&lt;br /&gt;
&lt;br /&gt;
* Liefert sehr günstige Break-Out Boards für diverse Packages&lt;br /&gt;
* Hat einige einfache und günstige Programmer auch für FPGAs etc&lt;br /&gt;
&lt;br /&gt;
=== Atlantis Shop 24 ===&lt;br /&gt;
Homepage: http://www.atlantis-shop24.de&lt;br /&gt;
&lt;br /&gt;
* Elektronik nur ein kleiner Teil des Angebotes. Ansonsten eher Drogerie bzw. Haushaltsbedarf&lt;br /&gt;
&lt;br /&gt;
=== Atzert-Elektronik Versand ===&lt;br /&gt;
Homepage: http://www.atzert-elektronik.de&lt;br /&gt;
&lt;br /&gt;
Früher &#039;&#039;EFB-Electronic Versand&#039;&#039;, davor &#039;&#039;MEGAKICK Electronic Stores&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Mindestens schon der dritte Name und die dritte Webseite für den Endkunden-Versand von [[Elektronikversender#ETT|ETT]]. ETT liefert sonst nur an gewerbliche Kunden.&lt;br /&gt;
* Ladengeschäfte in Bielefeld, Braunschweig, Bremen, Hamburg und Berlin. &lt;br /&gt;
* Die Preise schwanken im Vergleich zu anderen Anbietern, welche ebenfalls ETT-importierte Produkte führen, mal nach oben, mal nach unten.&lt;br /&gt;
&lt;br /&gt;
=== Bassenberg Elektronik ===&lt;br /&gt;
Homepage: http://www.bassenberg.de&lt;br /&gt;
&lt;br /&gt;
* Ladengeschäfte in Braunschweig und Neumünster&lt;br /&gt;
* Beschafft auch nicht mehr gelistete und abgekündigte Bauteile&lt;br /&gt;
* Liefert auch an Privat&lt;br /&gt;
&lt;br /&gt;
=== Batronix ===&lt;br /&gt;
Homepage: http://www.batronix.com&lt;br /&gt;
* Grosses Sortiment an Geräten&lt;br /&gt;
* Bausätze für Microcontroller-Applikationen&lt;br /&gt;
* Liefert auch an Privat&lt;br /&gt;
&lt;br /&gt;
=== BAZ Spezialantennen ===&lt;br /&gt;
Homepage: http://www.spezialantennen.de&lt;br /&gt;
&lt;br /&gt;
* Antennen für Amateurfunk, ISM, WLAN usw.&lt;br /&gt;
&lt;br /&gt;
=== bed - elektronik ===&lt;br /&gt;
Homepage: http://www.bed-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Restposten aktive und passive Bauelemente&lt;br /&gt;
* sehr günstige Preise&lt;br /&gt;
* alles ab Lager lieferbar&lt;br /&gt;
* Versand an Privat&lt;br /&gt;
* ab 60 EUR versandkostenfrei&lt;br /&gt;
&lt;br /&gt;
=== Bfi-Optilas ===&lt;br /&gt;
Homepage: http://www.bfioptilas.de&lt;br /&gt;
&lt;br /&gt;
* Kein Onlineshop&lt;br /&gt;
* spezialisierter Distributor für Hochfrequenzhalbleiter und Optik&lt;br /&gt;
&lt;br /&gt;
=== BG-Electronics.de ===&lt;br /&gt;
Homepage: http://www.bg-electronics.de&lt;br /&gt;
&lt;br /&gt;
* Online Shop für aktive und passive elektronische Bauelememte&lt;br /&gt;
* günstige Preise&lt;br /&gt;
* alle Artikel ab Lager lieferbar, daher kurze Wartezeiten&lt;br /&gt;
* weltweiter Versand&lt;br /&gt;
* zahlreiche Mengenrabatte&lt;br /&gt;
* viele Ersatzteile aus dem Audio-, CarHiFi und TV-Bereich&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== B &amp;amp; M electronics ===&lt;br /&gt;
Homepage: http://www.bmelectronics.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Platinen und Baugruppen für Amateurfunk&lt;br /&gt;
Seite nicht erreichbar am 22.7.2012 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Box73 ===&lt;br /&gt;
Homepage: http://www.box73.de&lt;br /&gt;
&lt;br /&gt;
Onlineshop des Funkamateur.&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Bausätze, Literatur aus dem Amateurfunkbereich&lt;br /&gt;
* Preise sind O.K.&lt;br /&gt;
* Bestellungen werden nur Di und Do bearbeitet&lt;br /&gt;
* Ab 50 EUR bei Bankeinzug portofrei.&lt;br /&gt;
&lt;br /&gt;
=== Bürklin OHG ===&lt;br /&gt;
Homepage: http://www.buerklin.com&lt;br /&gt;
&lt;br /&gt;
* große Auswahl, hohe Verfügbarkeit&lt;br /&gt;
* sehr schneller Versand&lt;br /&gt;
* Ladengeschäft in Oberhaching (südlicher Landkreis München)&lt;br /&gt;
* &amp;lt;s&amp;gt;nur an gewerbliche Abnehmer (lt. AGB), private Abnehmer können dennoch im Ladengeschäft einkaufen&amp;lt;br&amp;gt;Angeblich versendet Bürklin seit November 2010 auch an Privatpersonen. Allerdings verlangt Bürklin weiterhin in Adressformularen die Eingabe eines Firmennamens &amp;lt;br&amp;gt;Geben Sie einen Wert in das Feld &amp;quot;Firma&amp;quot; ein.&amp;lt;br&amp;gt;Daher ist diese Information eher mit Vorsicht zu genießen.&amp;lt;/s&amp;gt;&amp;lt;br&amp;gt;Mittlerweile muss man auch keinen Firmennamen mehr eingeben. Die AGB wurde ebenfalls angepasst.&lt;br /&gt;
&lt;br /&gt;
=== CBsoft, s.r.o. (ltd.) ===&lt;br /&gt;
*Homepage: http://www.jjtubes.eu/&lt;br /&gt;
* Firma in der Slowakei&lt;br /&gt;
* Verkauft Röhren der Firma JJ&lt;br /&gt;
* englischsprachig&lt;br /&gt;
* Zahlungsmöglichkeiten in € mit Paypal und Kreditkarte&lt;br /&gt;
&lt;br /&gt;
=== chiptrade.com ===&lt;br /&gt;
siehe [[#SE Spezial-Electronic AG|SE Spezial-Electronic AG]]&lt;br /&gt;
&lt;br /&gt;
=== ConeleK Electronic ===&lt;br /&gt;
Homepage: http://www.conelek.com&lt;br /&gt;
&lt;br /&gt;
* Sehr kleines Bauteileangebot (Röhren, Röhrensockel)&lt;br /&gt;
* Elektronik-Laborbedarf, insbesondere Nachfüllpackungen mit Steckbrett-Drahtbrücken&lt;br /&gt;
* Werkzeug für Elektronik&lt;br /&gt;
* Stromversorgungen&lt;br /&gt;
* Versand an Privat&lt;br /&gt;
* Versandkosten bis 25kg, Vorkasse 5,90€ (Stand 04/2008)&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: http://www.conrad.de und http://www.business.conrad.de&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;) (Anm.: Bauteile, die nur im Business-Katalog aufgeführt sind, sind in Ladengeschäften nur über Sonderbestellung zu bekommen, d.h. dort in aller Regel nicht vorrätig.)&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 bis zu 10% Rabatt für Schulen (bei genügend Umsatz)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, sechs in Österreich (Megastores)&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;
* Verfügbarkeit in Filialen kann Online überprüft werden.&lt;br /&gt;
* Verfügbarkeit in Filialen kann über zentale Rufnummer erfragt werden. Abholung bestellter Ware in Filialen möglich, aber trotzdem gleiche Versandkosten.&lt;br /&gt;
* Eigenmarken: u.a. Voltcraft, Renkforce&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Vorerst Auskommentiert - Subjektiv/Einzelerfahrung, veraltete Informationen (Filialen)&lt;br /&gt;
* Mit jeder Bestellung erhält man zusätzlich Werbung von unseriösen Firmen, wo Gewinne versprochen werden und man sich in Wirklichkeit für irgendwelche Abos verpflichtet. Wenn man bei Conrad anruft und sie zur Rede stellt, erhält man die Antwort, dass diese Werbung anscheinend aus Versehen hineingerutscht ist. So ein Zufall.&lt;br /&gt;
* sehr kulant bei Umtäuschen&lt;br /&gt;
* versuchen bei Rückgaben einen Teil oder den gesamten Betrag einzubehalten (schon mehrfach vorgekommen)&lt;br /&gt;
* Schlampig verpackte Artikel. ICs sind nicht Antistatik-Konform verpackt.&lt;br /&gt;
* Die Filiale München / Tal hat keine Telefonnummer mehr in den Verzeichnissen, anscheinend sind Kundenanfragen dort zu &amp;quot;lästig&amp;quot;. (Kommentar: andere Filialen auch nicht, wird nur noch über eine Sammelnummer über ein Callcenter abgewickelt. Die Ladenbestellung wird dann vom Callcenter per eMail an die Filiale weitergeleitet.)&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;
--&amp;gt;&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;
* schnelle Lieferung, sofern die Artikel auf Lager sind, versandkostenfreie Nachlieferung, &#039;&#039;&#039;teilweise sehr lange Lieferzeiten bei Ware die nicht ab Lager lieferbar ist&#039;&#039;&#039;. Bitte selbst abwägen ob dies für einen selbst akzeptabel ist. (Diskussion siehe hier [http://www.mikrocontroller.net/topic/273508] und hier [http://www.mikrocontroller.net/topic/249395].)&lt;br /&gt;
* ATMEL, ICs, Passive und Mechanische Bauteile, Platinen- und Lötzubehör, u.a.&lt;br /&gt;
* ca. 4000 Bauteile lagernd&lt;br /&gt;
* günstig&lt;br /&gt;
* Mengenrabatte für fast jedes Produkt&lt;br /&gt;
* Versand innerhalb Deutschlands: &lt;br /&gt;
* DHL: 3,85€ (ab 60 EUR versandkostenfrei)&lt;br /&gt;
* Versand EU-weit ab 5,95 EUR&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Bauelemente, die nicht im Shop angeboten werden, können auf Anfrage beschafft werden.&lt;br /&gt;
* Zahlung per Vorkasse (3% Skonto), PayPal, Nachnahme. 1 EUR Aufschlag bei PayPal-Zahlung&lt;br /&gt;
* Zahlung per Bankabbuchung, Kreditkarte oder Rechnung nur für Stammkunden (ab 4 bis 5 Bestellung), Für Institute/Firmen direkt auf Rechnung möglich&lt;br /&gt;
* Abholung von Ware in Bonn-Dransdorf nach Vereinbarung&lt;br /&gt;
&lt;br /&gt;
=== dad24 ===&lt;br /&gt;
Homepage, Shop: http://dad24.eu&lt;br /&gt;
E-Bay Shop:     http://stores.ebay.de/Shop-dad24&lt;br /&gt;
&lt;br /&gt;
* Unterschiedliche Preise in den beiden Shops&lt;br /&gt;
* Kleiner, nicht sonderlich schöner Onlineshop (dad24.eu)&lt;br /&gt;
* Kleines Angebot. Lupenleuchten, Lötstationen, Labornetzgeräte, Messgeräte, etc. aus dem unteren Preissegment&lt;br /&gt;
* Jede Woche eine neue &amp;quot;Kategorie der Woche&amp;quot; auf dad24.eu. Produkte aus der Kategorie werden erst im Warenkorb mit einem Rabatt angezeigt, der auch gewährt wird.&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;
* Versand innerhalb Deutschlands ab 4,50 EUR&lt;br /&gt;
* Hat auch eine gute Auswahl an CPLDs und einige FPGAs diverser Hersteller&lt;br /&gt;
&lt;br /&gt;
=== Daschke LTD ===&lt;br /&gt;
PDF-Katalog (Achtung, grosse Datei): http://www.daschke-ltd.de/Catalog/&lt;br /&gt;
&lt;br /&gt;
* Prompte Antwort und Hilfe via info ät obige adresse&lt;br /&gt;
* Bezahlung per Paypal und Rechnung möglich. Ist auch Ebay-Händler.&lt;br /&gt;
* sehr faire Preise für Bauteile und Versand&lt;br /&gt;
* Führt eine Vielzahl an unüblichen Steckern und Buchsen&lt;br /&gt;
* Nicht verfügbare Bauteile wurden proaktiv nachbestellt, trotz geringer Bestellmenge. Prima!&lt;br /&gt;
&lt;br /&gt;
=== DES - Der Elektroniker-Shop ===&lt;br /&gt;
Homepage: http://www.DerElektronikerShop.de&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Bei diesem Shop häufen sich in der letzten Zeit Beschwerden, dass Artikel mehrere Monate Lieferzeit haben, ohne dass dies den Kunden mitgeteilt wird. Emailanfragen diesbezüglich bleiben i.d.R unbeantwortet.&lt;br /&gt;
 &lt;br /&gt;
Siehe auch den [http://www.mikrocontroller.net/topic/286786#3042475 Thread im Forum]&lt;br /&gt;
&lt;br /&gt;
* Bauteile&lt;br /&gt;
* Bauteilsätze der [http://www.DieElektronikerseite.de Elektronikerseite]&lt;br /&gt;
* Verkauf des BasicBeetle von [http://www.DieProjektseite.de der Projektseite]&lt;br /&gt;
* Ständig wachsendes Angebot&lt;br /&gt;
* Auch einige SMD-Bauteile verfügbar&lt;br /&gt;
* Kein Mindestbestellwert&lt;br /&gt;
* Versandkosten ab 3,80 EUR (Österreich/Europa ab 4,00 Eur)&lt;br /&gt;
* Versand auch nach Österreich (Europa auf Anfrage)&lt;br /&gt;
* Zahlung per Vorkasse&lt;br /&gt;
* Lieferzeit 1-3 Tage bei Verfügbarkeit&lt;br /&gt;
* PrePaid-Konto möglich&lt;br /&gt;
* Lieferungen auch an Privat&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: http://de.digikey.com&lt;br /&gt;
&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikbüro gibt es in den Niederlanden&lt;br /&gt;
* kostenloser Versand ab 65&amp;amp;#8364;, darunter 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* macht merkwürdige Plausibilitäts-Checks: wenn man privat über ihrem Dollar Limit (z.B. 400 Dollar bestellt) kommt sofort die Rückfrage nach Firmenname und Firmenadresse&lt;br /&gt;
* Rückfragen nach dem Verwendungszweck kommen ebenfalls schon bei der Bestellung bei bestimmten Bauteilen die der Exportkontrolle unterliegen&lt;br /&gt;
* Versand direkt aus den USA, dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* riesiges Angebot, gewissermaßen ein Distributor der auch Kleinmengen an Privatpersonen liefert, entscheidend ist, dass der Hersteller des Produkts geführt wird&lt;br /&gt;
* kein anderer Anbieter, bietet so viele verschiedene passive Bauteile in kleinen Stückzahlen, z.&amp;amp;nbsp;B. SMD Widerstände in Bauform 01005 bis 2512 meist in verschiedenen Toleranzklassen und von verschiedenen Herstellern&lt;br /&gt;
* alle Bauteile mit Herstellerangabe, Digikey kauft ausschließlich direkt vom Hersteller&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. 19%)&lt;br /&gt;
* Meistens deutlich teurer als Reichelt, doch häufig die beste Anlaufstelle für Privatkunden wenn es um Spezialbauteile geht, und der Hersteller sich im Programm von Digikey befindet&lt;br /&gt;
&lt;br /&gt;
=== Display Electronics ===&lt;br /&gt;
&lt;br /&gt;
Homepage: http://www.distel.co.uk&lt;br /&gt;
&lt;br /&gt;
* In England&lt;br /&gt;
* Webseite = Augenkrebs &lt;br /&gt;
* Online-Shop versteckt hinter dem Search-Button auf der Homepage&lt;br /&gt;
* Restposten aller Art&lt;br /&gt;
* Mindestbestellwert 10 GBP&lt;br /&gt;
&lt;br /&gt;
=== eHaJo ===&lt;br /&gt;
Homepage: http://www.eHaJo.de&lt;br /&gt;
&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Bauelemente (AVR, LCD, Kleinteile) und Bausätze sehr günstig&lt;br /&gt;
* eigenentwickelte Bausätze &lt;br /&gt;
* Lötübungen für SMD&lt;br /&gt;
* AVR-ISP-Stick&lt;br /&gt;
* Vorauskasse, Paypal, Sofortüberweisung, Rechnung ab 2. Bestellung&lt;br /&gt;
&lt;br /&gt;
=== EIBTron.com ===&lt;br /&gt;
Homepage: http://www.eibtron.com&lt;br /&gt;
&lt;br /&gt;
* Riesige Auswahl an Produkten (~300000)&lt;br /&gt;
* SMD-Bauteile bis 0402!&lt;br /&gt;
* auch spezielle Sachen wie Xilinx-Configuration PROMs, AD9740-DACs oder SMD-Quarze (z.B. Abracon ABM7) im Angebot&lt;br /&gt;
* Alternative zum HBE-Shop für Privatanwender!&lt;br /&gt;
* Versand direkt durch RS&lt;br /&gt;
* zuverlässiger und freundlicher Support&lt;br /&gt;
&lt;br /&gt;
=== Eisch-Kafka-Electronic ===&lt;br /&gt;
Homepage: http://www.eisch-electronic.de&lt;br /&gt;
 &lt;br /&gt;
* Hochfrequenz Bausätze und Bauteile für Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== EleConT ===&lt;br /&gt;
Homepage: http://www.elecont.de/shop/&lt;br /&gt;
&lt;br /&gt;
* Carrierboards für gebräuchliche AVR&lt;br /&gt;
&lt;br /&gt;
=== Electropuces ===&lt;br /&gt;
Homepage: http://perso.wanadoo.fr/electropuces/&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte aus Nantes, Frankreich  (teilweise engl. Menü)&lt;br /&gt;
&lt;br /&gt;
=== Electronic Search ===&lt;br /&gt;
&lt;br /&gt;
Homepage: http://www.electronic-search.de&lt;br /&gt;
&lt;br /&gt;
* Keine Mindestbestellmenge&lt;br /&gt;
* Verkauf auch an Privat/Bastler&lt;br /&gt;
* Fast alle Preise im Online-Shop nur &amp;quot;auf Anfrage&amp;quot;, und nicht im Shop angegeben.&lt;br /&gt;
&lt;br /&gt;
=== electronicpool Rheinstetten ===&lt;br /&gt;
Homepage: http://www.electronicpool.de&lt;br /&gt;
&lt;br /&gt;
* abgekündigte oder schwer beschaffbare elektronische Bauteile&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, keine Einzelbauteile&lt;br /&gt;
* entsprechende Literatur und Software&lt;br /&gt;
* &amp;quot;Kein Verkauf an Endverbraucher i.S.d. §13 BGB&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Elektronik-Kompendium ===&lt;br /&gt;
Homepage: http://www.elektronik-kompendium.de&lt;br /&gt;
&lt;br /&gt;
* Bausätze diverser Schaltungen (mit Anleitung und Funktionsbeschreibung)&lt;br /&gt;
* erspart lästiges Suchen in anderen Shops&lt;br /&gt;
* kurze Lieferzeiten&lt;br /&gt;
* günstiger Versand&lt;br /&gt;
&lt;br /&gt;
=== ElrePo ===&lt;br /&gt;
Homepage: http://www.elrepo.de&lt;br /&gt;
&lt;br /&gt;
*Relativ großes Sortiment an Bauteilen&lt;br /&gt;
*Günstige Sortimente und Recycling Bauteile&lt;br /&gt;
*Versandkosten ab 90ct !&lt;br /&gt;
&lt;br /&gt;
=== Elk Tronic ===&lt;br /&gt;
Homepage: http://www.elk-tronic.de&lt;br /&gt;
&lt;br /&gt;
* kleines Lieferprogramm Adapterplatinen (SMD -&amp;gt; 2,54mm-Raster) und Programmieradapter&lt;br /&gt;
* günstige Preise und Versandspesen&lt;br /&gt;
&lt;br /&gt;
=== Elko-Verkauf ===&lt;br /&gt;
Homepage: http://www.elko-verkauf.de&lt;br /&gt;
&lt;br /&gt;
* Nur Low-ESR-Elkos&lt;br /&gt;
* Elko-Sets für ein Gerät&lt;br /&gt;
&lt;br /&gt;
=== Ellmitron ===&lt;br /&gt;
Homepage: http://www.ellmitron.de/&lt;br /&gt;
Katalog: http://www.ellmitron.de/katalog.pdf&lt;br /&gt;
&lt;br /&gt;
Lehrmittel, Kleinbausätze vor allem für Schüler, Experimentierkästen&lt;br /&gt;
&lt;br /&gt;
=== Elpro ===&lt;br /&gt;
Homepage: http://www.elpro.org/shop/shop.php&lt;br /&gt;
&lt;br /&gt;
* Sehr gute Preise, nachsehen lohnt sich!&lt;br /&gt;
* Kein Mindestbestellwert, aber höhere Versandkosten für kleine Bestellungen. (Stand April 2013):&lt;br /&gt;
* Ab €200: Versandkostenfrei&lt;br /&gt;
* Große Auswahl an Mikrocontrollern, z.B. [[STM32]] und [[LPC1xxx]]&lt;br /&gt;
* Sehr große Auswahl an Schaltnetzteilen von Meanwell (geschlossen, offen, auf PCB lötbar, DIN-Schiene)&lt;br /&gt;
* Shopsoftware gewöhnungsbedürftig, jedoch sinnvolle Untergliederung. Braucht JavaScript&lt;br /&gt;
* Keine AGBs online. Da Preisangaben ohne MwSt. richtet sich das Angebot vermutlich nicht an Endverbraucher (werden aber beliefert)&lt;br /&gt;
* Sehr schnelle Lieferung, Bearbeitungszeit (bis Warenausgang) oft nur 2-3 Tage.&lt;br /&gt;
* Versand bisher mit DHL&lt;br /&gt;
* gute bis sehr gute Verpackung&lt;br /&gt;
&lt;br /&gt;
=== Eltrix ===&lt;br /&gt;
Homepage: http://eltrix.de/Starteltrix.htm&lt;br /&gt;
&lt;br /&gt;
*  Verbrauchsmaterial, Tipps und Tricks fürs Leiterplattenherstellen und Löten&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: http://www.elv.de&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;
* im Allgemeinen 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;
* Versandkosten innerhalb Deutschland 4,5&amp;amp;#8364;, ab 150&amp;amp;#8364; Bestellwert versandkostenfrei&lt;br /&gt;
* nicht abwählbare Versandversicherung, die 0,85% des Bestellwertes kostet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Erklärte am 31. August 2010 &amp;quot;... den Betrieb bis auf weiteres zu schließen.&amp;quot; &lt;br /&gt;
=== Embedit Mikrocontrollertechnik ===&lt;br /&gt;
Online Shop: http://shop.embedit.de&lt;br /&gt;
&lt;br /&gt;
* Gute Auswahl an AVR Controllern, aber nur aktuelle Typen, keine AT90Sxxxx. Teilweise exotische Typen wie MLF Gehäuse&lt;br /&gt;
* Atmel und Philips SmartARM Controller&lt;br /&gt;
* Module und Boards mit AVR Controllern&lt;br /&gt;
* Zubehör von Atmel wie STK500 oder AVRISP mkII&lt;br /&gt;
* Diverse aktive und passive Elektronikteile, ständig neue Teile&lt;br /&gt;
* Mechanikteile wie Zahnräder, Steckverbinder usw.&lt;br /&gt;
* Lieferzeit 1-4 Tage, je nachdem wie man zahlt (hab aber auch schon ne Vorauskasse innerhalb eines Tages per Expressbrief bekommen, zuvorkommender Service)&lt;br /&gt;
* Versandkosten ab 3,95 &amp;amp;#8364;, versicherter Versand, Vorauskasse und Nachnahme&lt;br /&gt;
* Keine Versandkosten ab 50 &amp;amp;#8364; Warenwert innerhalb Deutschlands, bei Zahlung per Vorauskasse und Lieferung per Hermes&lt;br /&gt;
* Lieferung in viele EU-Länder&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ETT - Electronic Toys Trading  ===&lt;br /&gt;
Homepage: http://www.ett-online.de&lt;br /&gt;
&lt;br /&gt;
* Großhandel nur für Gewerbekunden.&lt;br /&gt;
* Zweitshop [[Elektronikversender#Atzert-Elektronik_Versand|Atzert-Elektronik Versand]] (früher EFB-Electronic Versand, davor Megakick Electronic-Stores) für Endkunden.&lt;br /&gt;
* Ladengeschäft in Braunschweig für jedermann. Weitere Atzert Ladengeschäfte in Bielefeld, Bremen, Hamburg und Berlin.&lt;br /&gt;
* Eigentümer der Marken McCHECK®, McPower®, McVoice® und anderer, unter denen ETT importierte Messgeräte, Labornetzteile, usw. an Großkunden und Händler vertreibt. Diese sind unter oben genannten Marken dann in vielen Shops anderer Firmen für Endkunden zu finden, nicht nur bei Atzert. Preisvergleiche lohnen.&lt;br /&gt;
&lt;br /&gt;
=== Ettinger GmbH ===&lt;br /&gt;
Homepage: http://www.ettinger.de&lt;br /&gt;
&lt;br /&gt;
* Für gewerbliche Kunden&lt;br /&gt;
* Mechanische Komponenten (Gehäuse, Abstandshalter, Drehknöpfe, usw.)&lt;br /&gt;
* LEDs&lt;br /&gt;
* Gewöhnungsbedürftiger Online-Shop&lt;br /&gt;
&lt;br /&gt;
=== Eurotronik GmbH ===&lt;br /&gt;
Homepage: http://www.eurotronik.com&lt;br /&gt;
&lt;br /&gt;
* Für gewerbliche Kunden&lt;br /&gt;
* Mindestbestellwert 100.00 Euro&lt;br /&gt;
* Individuelle Suche für alle möglichen Bauelemente&lt;br /&gt;
* Abgekündigte und allokierte BE finden&lt;br /&gt;
* Besonders Stark mit Altera, Microchip, Texas Instruments&lt;br /&gt;
&lt;br /&gt;
=== EVE ===&lt;br /&gt;
Homepage: http://www.eve.de&lt;br /&gt;
&lt;br /&gt;
* Zitat aus den AGBs:&lt;br /&gt;
::&#039;&#039;&amp;quot;Zu Bestellungen im Rahmen des Online-Handels sind nur durch uns autorisierte, d. h. zugelassene Käufer berechtigt. Wir gewähren nach erfolgreicher Zertifizierung – ohne hierzu verpflichtet zu sein – dem jeweiligen Käufer das nicht übertragbare, nicht exklusive Recht im Rahmen des Online-Handels Bestellungen uns gegenüber “auszubringen”.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Dies darf man wohl getrost als Hinweis ansehen, dass Endverbraucher als Kunden nicht gewünscht sind.&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;
=== EXP-TECH ===&lt;br /&gt;
Homepage: http://www.exp-tech.de/&lt;br /&gt;
* liefert an privat&lt;br /&gt;
* vielfältiges Sortiment von vielen verschiedenen Händlern (Adafruit, Sparkfun, Arduino, Olimex, Embest, SeedStudio, CooCox,  Digi, BeagleBone, IteadStudio, RaspberryPI, SecretLabs, CookingHacks,  Axiris.pe, OpenPicus, RobotElectronics, RobotBase, AttenInstruments,  Dagu, RF-Explorer, TexasInstruments, DangerousPrototypes...)&lt;br /&gt;
* Lieferung per DHL&lt;br /&gt;
* Zahlungsmöglichkeiten: Überweisung (Vorkasse), PayPal, Visa, MasterCard&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
Homepage: http://de.farnell.com&lt;br /&gt;
&lt;br /&gt;
* liefert nur an gewerbliche Abnehmer, Ausnahme sind Studenten und HTL-Schüler (Österreich, Farnell.at). Nachweis wird verlangt (Gewerbeschein oder Immatrikulation).&lt;br /&gt;
* Lieferungen an Privat:&lt;br /&gt;
:* Schweiz: Farnell Schweiz beliefert auch Privatkunden.&lt;br /&gt;
:* Deutschland: Über den Reseller [[#HBE_-_Heinz_B.C3.BCchner_Elektronik.2C_Messtechnik.2C_med._Elektronik_e.K.|HBE]] kann man Produkte aus dem Farnell-Sortiment zu bestellen.&lt;br /&gt;
:* Österreich: [[#Technik-Welt / Industrieshop.at|Technik-Welt / Industrieshop.at]]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* &amp;lt;s&amp;gt;12% Rabatt für Studenten und Lehreinrichtungen&amp;lt;/s&amp;gt; Laut Kundenservice seit Dezember 2013 keine Rabatte mehr für bestimmte Kundengruppen!&lt;br /&gt;
* sehr schneller Versand, Ware ist in 99% aller Fälle am nächsten Tag da (UPS), fehlende Positionen werden relativ rasch versandkostenfrei nachgeliefert&lt;br /&gt;
* Versandkosten: Bestellung bis 49,99&amp;amp;#8364;: 7,95&amp;amp;#8364;;   50,- bis 149,99&amp;amp;#8364;: 5,95&amp;amp;#8364;;   ab EUR 150,- versandkostenfrei&lt;br /&gt;
* hat nach eigenen Aussagen umfangreichstes Sortiment an RoHS-konformen Bauteilen mit Suchfunktion im WWW&lt;br /&gt;
* leistungsfähige parametrische Suchfunktion / teils aber völlig nutzlos, da den Artikeln massenweise Tags fehlen, weswegen die Suchergebnisse unnötig eingeschränkt werden&lt;br /&gt;
* Datenblätter für die meisten Bauteile online&lt;br /&gt;
* Internetpräsenz fällt nachts oft aus (Hinweis auf angebliche geplante Wartungsarbeiten)&lt;br /&gt;
* Sortierfunktion wird bei der Suche ständig zurückgesetzt, im Warenkorb ist überhaupt keine sinnvolle Sortierung möglich&lt;br /&gt;
* Eigenwillige Preispolitik: Einiges sehr günstig, Anderes total überteuert&lt;br /&gt;
&lt;br /&gt;
=== Fibra-Brandt Zweibrücken ===&lt;br /&gt;
Homepage: http://www.fibra-brandt.com&lt;br /&gt;
&lt;br /&gt;
* lagert tausende veraltete und schwer zu findende elektronische Bauteile&lt;br /&gt;
* Halbleiter, IC&#039;s, Transistoren, Spulen und Kondensatoren.&lt;br /&gt;
* Sonderbeschaffung von abgekündigten Halbleitern.&lt;br /&gt;
&lt;br /&gt;
=== Fischer DK2FD ===&lt;br /&gt;
Homepage: http://www.dfe-online.de für das Ingenieurbüro,&lt;br /&gt;
Homepage: http://www.dk2fd.de für Amateurfunkprodukte&lt;br /&gt;
&lt;br /&gt;
* Baugruppen für Hochfrequenzmesstechnik und Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Fuchs Shop ===&lt;br /&gt;
Homepage: http://www.fuchs-shop.com/&lt;br /&gt;
&lt;br /&gt;
* 1-Wire- und iButton-Komponenten&lt;br /&gt;
&lt;br /&gt;
=== Funkamateur Online-Shop ===&lt;br /&gt;
&lt;br /&gt;
Siehe [[Elektronikversender#Box73]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futurelec ===&lt;br /&gt;
Homepage: http://www.futurlec.com&lt;br /&gt;
&lt;br /&gt;
* günstiger Versender aus Übersee&lt;br /&gt;
* viele Stamp-Boards&lt;br /&gt;
* LED Matrix-Module&lt;br /&gt;
&lt;br /&gt;
=== Future Electronics ===&lt;br /&gt;
Homepage: http://de.futureelectronics.com&lt;br /&gt;
&lt;br /&gt;
* große Auswahl an Teilen&lt;br /&gt;
* Versand auch an Privatpersonen&lt;br /&gt;
* Preisangaben ohne MwSt.&lt;br /&gt;
* Zahlung nur mit Kreditkarte&lt;br /&gt;
* Versandkosten 7,14€ (Brutto)&lt;br /&gt;
* Versand aus den USA mit FedEx, Lieferzeit meist unter 5AT&lt;br /&gt;
* Verzollung usw. wird von FutureElectronics gemacht, keine Nachzahlungen etc.&lt;br /&gt;
&lt;br /&gt;
=== Geist Electronic-Versand GmbH ===&lt;br /&gt;
Homepage: http://www.geist-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
* D-78054 Villingen-Schwenningen&lt;br /&gt;
* Versandkosten: 5.40€&lt;br /&gt;
&lt;br /&gt;
=== Giga-Tech ===&lt;br /&gt;
Homepage: http://www.giga-tech.de&lt;br /&gt;
&lt;br /&gt;
* Spezialitäten für Hochfrequenz / Amateurfunk&lt;br /&gt;
* Scheinbar nur noch Abverkauf, da viele Artikel nicht mehr lieferbar&lt;br /&gt;
* Antworten auf Anfragen und Lieferungen dauern sehr lange&lt;br /&gt;
* 68542 Heddesheim&lt;br /&gt;
&lt;br /&gt;
=== Grummes Elektronik ===&lt;br /&gt;
Homepage: http://www.grummes.de&lt;br /&gt;
&lt;br /&gt;
* Elektronikversender /CNC-Fräsmaschinen / Schrittmotorsteuerungen / Bauteile&lt;br /&gt;
* Homepage nicht aufrufbar (10.12.2011)&lt;br /&gt;
&lt;br /&gt;
=== Glyn (GLYNshop) ===&lt;br /&gt;
Homepage: https://www.glynshop.com/erp/welcome.do&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;B2B Shop&amp;quot; = nicht für Privatkunden&lt;br /&gt;
* Microcontroller, Evaluation Boards, TFT-Displays, LC-Displays, Memory Cards u.a.&lt;br /&gt;
&lt;br /&gt;
=== guloshop.de ===&lt;br /&gt;
Homepage: http://guloshop.de&lt;br /&gt;
&lt;br /&gt;
* kleiner Shop, konzentriert sich auf Standard-AVRs im DIP-Gehäuse, ist dabei aber meist der billigste Versender in Deutschland&lt;br /&gt;
* ATtiny, ATmega, Breakout-Boards, Programmer, Adapterkabel, IC-Fassungen&lt;br /&gt;
* AVR mit geflashtem Arduino-Bootloader&lt;br /&gt;
* äußerst niedrige Preise&lt;br /&gt;
* liefert schnell und zuverlässig, jedoch nur gegen Vorkasse&lt;br /&gt;
* kein Mindestbestellwert, Versandkosten für kleine Bestellungen: 2,40 EUR, darüber 4,40 EUR&lt;br /&gt;
* ansässig in 90489 Nürnberg&lt;br /&gt;
&lt;br /&gt;
=== H-Tronic ===&lt;br /&gt;
Homepage: http://www.h-tronic.eu/index.php&lt;br /&gt;
&lt;br /&gt;
* Online-Shop einer Entwicklungsfirma, in dem neben Baugruppen und Geräten auch einige Bauelemente und Elektronikzubehör angeboten werden&lt;br /&gt;
* kleines Angebot&lt;br /&gt;
&lt;br /&gt;
=== Hallmanns Elektronik ===&lt;br /&gt;
Homepage: http://www.hallmanns.com &amp;lt;br&amp;gt;&lt;br /&gt;
Adresse: Bruno Hallmanns, Weierstraße 41, 52349 Düren&lt;br /&gt;
&lt;br /&gt;
* Elektronikhändler mit Ladenlokal und Versand&lt;br /&gt;
* Ladentypisches Sortiment (Bauteile, Geräte, PC, Funk, Hifi...)&lt;br /&gt;
&lt;br /&gt;
=== Hari Seligenstadt ===&lt;br /&gt;
Homepage: http://www.hari-ham.com&lt;br /&gt;
&lt;br /&gt;
* Bausätze, Ringkerne, Geräte für Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== HBE - Heinz Büchner Elektronik, Messtechnik, med. Elektronik e.K. ===&lt;br /&gt;
Homepage: http://www.hbe-shop.de/katalog/&lt;br /&gt;
&lt;br /&gt;
* Bezeichnet sich als &#039;&#039;[[#Farnell|Farnell]] Fachhändler&#039;&#039;, bei dem nichtgewerbliche Kunden aus dem Farnell-Sortiment bestellen können.&lt;br /&gt;
* Preise für Farnell-Produkte normalerweise Farnell Netto-Preis + MwSt.&lt;br /&gt;
* Mindestbestellwert 25,- € (netto), Mindermengenzuschlag 5,- € (Stand 06/2010)&lt;br /&gt;
* Versandkosten 4,75 € (netto), ab 75,- € (netto) versandkostenfrei (Stand 06/2010)&lt;br /&gt;
&lt;br /&gt;
=== Heho-Elektronik ===&lt;br /&gt;
Homepage: http://www.heho-elektronik.de&lt;br /&gt;
* Halbleiter / Bauteile, Sortimente, Handy - Akkus, VELLEMAN - Bausätze&lt;br /&gt;
* Aktuelles Angebot, Ladegeräte / Akkuladegeräte, Blei - Akkus&lt;br /&gt;
* Spannungswandler, Audio / Video / USB - Kabel, Netzwerk - Kabel&lt;br /&gt;
* 1-2 Arbeitstage für Waren ab Lager&lt;br /&gt;
* Porto + Verpackung pauschal Euro 4,50&lt;br /&gt;
* Mindestbestellwert von &amp;amp;#8364; 10,00&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Von der Webseite &amp;quot;Unser Angebot richtet sich an Schulen, Behörden, Handel, Handwerk und Industrie.&amp;quot;&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
* Mindestbestellwert von 20&amp;amp;#8364;&lt;br /&gt;
* Standardversand innerhalb Deutschlands 5,80&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== HN Electronic Components GmbH &amp;amp; Co. KG / Netzteilshop ===&lt;br /&gt;
Homepage gewerbliche Kunden: http://www.hn-electronic.de/&lt;br /&gt;
* Netzteile aller Art&lt;br /&gt;
* Es gibt keinen Onlineshop mehr, wahrscheinlich werden Endkunden nicht beliefert&lt;br /&gt;
** Homepage Endkunden: http://www.netzteilshop.com/hnshop.html&lt;br /&gt;
** Lieferung an Endkunden nur per UPS Nachnahme.&lt;br /&gt;
** Mindestbestellmenge für Endkunden 25 €&lt;br /&gt;
&lt;br /&gt;
=== Home-Electronic24 ===&lt;br /&gt;
Homepage: http://www.home-electronic24.de/&lt;br /&gt;
&lt;br /&gt;
=== HW-Electronics ===&lt;br /&gt;
Homepage: http://www.hw-electronics.de &amp;lt;br&amp;gt;&lt;br /&gt;
Homepage EU: http://hw-electronics.eu/&lt;br /&gt;
&lt;br /&gt;
* Tauch- und Sprühätzanlagen&lt;br /&gt;
* Entwicklungsgeräte&lt;br /&gt;
* Belichtungsgeräte, Materialsätze zum Selbstbau von Belichtungsgeräten&lt;br /&gt;
&lt;br /&gt;
=== ic-box24.de ===&lt;br /&gt;
Homepage: http://www.ic-box24.de&lt;br /&gt;
&lt;br /&gt;
* NOS Bauelemente (ab Lager)&lt;br /&gt;
* kein Mindestauftragswert&lt;br /&gt;
* 3,00€ Versandkosten&lt;br /&gt;
* liefert auf Rechnung oder Paypal, MWSt. wird ausgewiesen&lt;br /&gt;
&lt;br /&gt;
=== ID-Elektronik ===&lt;br /&gt;
Homepage: http://www.id-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Amateurfunk-Baugruppen&lt;br /&gt;
&lt;br /&gt;
=== IT-WNS ===&lt;br /&gt;
Homepage: https://www.it-wns.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Bauteile, Platinen, Bausätze&amp;quot; insbesondere mit ATMEGA Mikrocontrollern&lt;br /&gt;
* Bausätze zu Projekten aus dem Forum&lt;br /&gt;
* SD-Slots, RFID, Bluetooth-Module, AVR Mikrocontroller, USB uvam.&lt;br /&gt;
* Bauelemente, die nicht im Shop angeboten werden, können auf Anfrage (Kontaktformular) oft beschafft werden &lt;br /&gt;
* Günstige Preise und Versandkosten ab 2,45EUR, kein Mindestbestellwert&lt;br /&gt;
* Schneller Versand, sofern die Artikel auf Lager sind, versandkostenfreie Nachlieferung&lt;br /&gt;
&lt;br /&gt;
=== Kabelscheune ===&lt;br /&gt;
Homepage: http://www.kabelscheune.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Direktversand von Elektromaterial und Multimediaprodukten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kelemen ===&lt;br /&gt;
Homepage: http://www.kelemenantennen.de/Kelemen-Shop/&lt;br /&gt;
&lt;br /&gt;
* Messgeräte, Antennen und Zubehör für den Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: http://www.kessler-electronic.de&lt;br /&gt;
&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment kleiner als Reichelt und mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
* oft lange Lieferzeiten&lt;br /&gt;
* Versandkosten innerhalb Deutschlands 4€ (Brief), 5€ (DHL-Paket), 10€ (DHL-Express-Paket)&lt;br /&gt;
&lt;br /&gt;
=== Klein-Electronic ===&lt;br /&gt;
Homepage: http://www.klein-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen zur Video- und 2,4GHz-Sendetechnik&lt;br /&gt;
&lt;br /&gt;
=== Konni-Antennen ===&lt;br /&gt;
Homepage: http://www.konni-antennen.de&lt;br /&gt;
&lt;br /&gt;
* Antennen für TV, Amateurfunk&lt;br /&gt;
* Zubehör, Einzelteile&lt;br /&gt;
* sehr netter kompetenter Service&lt;br /&gt;
&lt;br /&gt;
=== Köditz Nachrichtentechnik ===&lt;br /&gt;
Homepage: http://www.koeditz-nachrichtentechnik.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen und Bauteile für Amateurfunk und TV-Satellitenempfang&lt;br /&gt;
&lt;br /&gt;
=== Kuhne DB6NT ===&lt;br /&gt;
Homepage: http://www.kuhne-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen und Bausätze für Mikrowellenamateure&lt;br /&gt;
&lt;br /&gt;
=== LEDSEE Electronics ===&lt;br /&gt;
Homepage: http://www.ledsee.com&lt;br /&gt;
&lt;br /&gt;
* LEDs, LCDs, diverses&lt;br /&gt;
* Lieferung direkt aus China, daher sehr günstig und lange Lieferzeiten&lt;br /&gt;
&lt;br /&gt;
=== LED Microtechnics LTD ===&lt;br /&gt;
Homepage: http://www.ledmeile.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;LED Shop und Lampentechnik&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== LED-Tech LED-Shop ===&lt;br /&gt;
Homepage: http://www.led-tech.de&lt;br /&gt;
&lt;br /&gt;
* viele verschiedene LEDs zu sehr guten (meist den günstigsten) Preisen&lt;br /&gt;
* vor allem auf High-Power-LEDs spezialisiert&lt;br /&gt;
* viele verschiedene Treiber für High-Power-LEDs&lt;br /&gt;
* kostenloser Versand&lt;br /&gt;
* haben ein eigenes, sehr umfangreiches Forum&lt;br /&gt;
&lt;br /&gt;
=== Lieske Elektronik ===&lt;br /&gt;
Homepage: http://www.lieske-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Aktuell: Nach Inventur mehrere hundert Artikel um bis zu 50% reduziert (Stand: 01/2014)&lt;br /&gt;
* Sehr breite Produktpalette mit mehr als 500.000 Artikeln (IT-Sektor, Sicherheitstechnik, Unterhaltungselektronik, Elektrotechnik, Industrieelektronik, Telekommunikation, etc.)&lt;br /&gt;
* Eigener [http://blog.lieske-elektronik.de/ Firmenblog]&lt;br /&gt;
* weltweiter Versand&lt;br /&gt;
* liefert nur an Geschäftskunden&lt;br /&gt;
&lt;br /&gt;
=== Lüdeke Elektronic ===&lt;br /&gt;
Homepage: http://www.luedeke-elektronic.de/&lt;br /&gt;
&lt;br /&gt;
* großes Sortiment, bietet unter anderem auch viele selbst entwickelte Bausätze an&lt;br /&gt;
&lt;br /&gt;
=== LUMITRONIX LEDs-Shop ===&lt;br /&gt;
Homepage: http://www.leds.de&lt;br /&gt;
&lt;br /&gt;
* alles rund um LEDs (auch Zubehör und Lektüre)&lt;br /&gt;
* neben Standard-LEDs auch SMD- und SuperFlux-LEDs&lt;br /&gt;
&lt;br /&gt;
=== Marsch Elektronik, M. Schlimper ===&lt;br /&gt;
Homepage: http://www.marsch-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Online Shop für aktive und passive Bauelemente&lt;br /&gt;
* Versandkosten ab Euro 1,60&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* bietet auch Einsteigersortimente und Widerstandsortimente (auch SMD)&lt;br /&gt;
* liefert nur innerhalb Deutschlands&lt;br /&gt;
* nicht gelistete Artikel können angefragt werden und werden meist auch beschafft&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauritz Communication &amp;amp; Electronics ===&lt;br /&gt;
Homepage: http://www.mauritz-shop.eu&lt;br /&gt;
&lt;br /&gt;
* Online Shop für HF-Stecker und Kabel&lt;br /&gt;
* bietet HF-Stecker/Buchsen und Koaxkabel an&lt;br /&gt;
* große Auswahl, auch exotische Teile&lt;br /&gt;
* Kabelkonfektionierung nach Wunsch&lt;br /&gt;
* vernünftige Preise&lt;br /&gt;
* liefert nach Rücksprache auch weltweit&lt;br /&gt;
* Keine Mindestbestellwert, aber 5 € Aufschlag unter 15 €&lt;br /&gt;
* Versand bis 40 kg pauschal 5,95 € per GLS innerhalb DE&lt;br /&gt;
* schneller Versand&lt;br /&gt;
* Paypal oder Vorkasse&lt;br /&gt;
&lt;br /&gt;
=== mechapro ===&lt;br /&gt;
Homepage: http://www.mechapro.de&lt;br /&gt;
* Online Shop für Schrittmotoren und Steuerungen&lt;br /&gt;
* Schrittmotorendstufen als Fertiggeräte oder Bausätze&lt;br /&gt;
* Eigene Entwicklung und Fertigung in Deutschland (außer Motoren)&lt;br /&gt;
* Versandkosten in DE ab 4 EUR&lt;br /&gt;
* liefert EU-weit&lt;br /&gt;
&lt;br /&gt;
=== Mein-Daarle ===&lt;br /&gt;
Homepage: http://www.mein-st-arnual.de/shop/saarbruecken/artikellisteL.html&lt;br /&gt;
&lt;br /&gt;
* Teileliste eines &amp;quot;Händlers aus Saarbrücken&amp;quot; (wahrscheinl.: Frank Skowronek ESS Elektronik Service), &amp;quot;bis sein Onlineshop ans Netz gehen kann&amp;quot;&lt;br /&gt;
* derzeit (4/2011) kein Onlineshop, Kontakt über Formular&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;
* kein Mindestbestellwert&lt;br /&gt;
* 22.7.2012: Totalausverkauf wegen Geschäftsaufgabe, 10% auf alle Artikel&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller-Starterkits ===&lt;br /&gt;
Homepage: http://www.microcontroller-starterkits.de&lt;br /&gt;
&lt;br /&gt;
* 22.7.2012: Seite nicht erreichbar&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;
* Abholung in Hattingen möglich&lt;br /&gt;
* Versandkosten innerhalb Deutschlands ab 2,50&amp;amp;#8364;&lt;br /&gt;
* keine Kreditkartenzahlung möglich&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller.net ===&lt;br /&gt;
Homepage: http://shop.mikrocontroller.net&lt;br /&gt;
&lt;br /&gt;
* Starterkits, Development Boards und Zubehör für AVR, AVR32, ARM und MSP430&lt;br /&gt;
&lt;br /&gt;
=== Mira Nürnberg ===&lt;br /&gt;
Homepage: http://www.mira-electronic.de&lt;br /&gt;
&lt;br /&gt;
* SMD-Bauteile, SMD-Sortimentboxen&lt;br /&gt;
* Verkauf und Preisangaben nur für Gewerbetreibende&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 22.7.2012 Seite nicht erreichbar, Domain bei einem Domaingrabber&lt;br /&gt;
=== Karl Müller EME Messtechnik ===&lt;br /&gt;
Homepage: http://www.eme-hf-technik.de&lt;br /&gt;
&lt;br /&gt;
* Hochfrequenz-Messtechnik, HF-Komponenten&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mouser ===&lt;br /&gt;
Homepage: http://de.mouser.com&lt;br /&gt;
&lt;br /&gt;
* Liefert an Privat&lt;br /&gt;
* Zügige Lieferung mit FedEx aus den USA&lt;br /&gt;
* Keine Halbleiter von Linear, National und Analog&lt;br /&gt;
* &amp;quot;Versand ist kostenfrei bei den meisten Bestellungen über 65 €&amp;quot;&lt;br /&gt;
* Preise inkl. Zoll aber ohne Einfuhrumsatzsteuer (Einfuhr laut Berichten über Frankreich, also +19,6%)&lt;br /&gt;
&lt;br /&gt;
=== MS-Elektronik ===&lt;br /&gt;
Homepage: http://www.ms-elektronik.info&lt;br /&gt;
&lt;br /&gt;
* Liefert an Privat&lt;br /&gt;
* Zügige Lieferung&lt;br /&gt;
* Gute Qualität&lt;br /&gt;
* Viel in Richtung Audio&lt;br /&gt;
* Große Auswahl an Elkos -&amp;gt; kleine Preise&lt;br /&gt;
* kein allzu großes Sortiment&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: http://www.muetronshop.de&lt;br /&gt;
&lt;br /&gt;
* Keine Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== myAVR Shop ===&lt;br /&gt;
Hompage http://shop.myavr.de&lt;br /&gt;
&lt;br /&gt;
* Kleine Auswahl, aber die angebotene Ware ist sehr preiswert (meist preiswerter als bei Reichelt)&lt;br /&gt;
* Zügige Lieferung (1-2 Werktage)&lt;br /&gt;
* Diverse Zahlungsmöglichkeiten: Rechnung, Vorkasse, Lastschrift, Kreditkarte, PayPal&lt;br /&gt;
* Kein Mindestbestellwert&lt;br /&gt;
* Sehr günstige Versandkosten ab 1,95 Eur&lt;br /&gt;
* Mengenrabatt ab 10 gleichen Artikeln&lt;br /&gt;
&lt;br /&gt;
=== Neuhold-Elektronik ===&lt;br /&gt;
Homepage: http://www.neuhold-elektronik.at &amp;lt;br&amp;gt;&lt;br /&gt;
Shop: http://www.neuhold-elektronik.at/catshop/default.php?language=de&lt;br /&gt;
&lt;br /&gt;
* preiswerte Schnäppchen&lt;br /&gt;
* regelmäßig aktualisierte Angebotsliste herunterladbar&lt;br /&gt;
* Ab 60,- EUR versandkostenfrei in Österreich&lt;br /&gt;
&lt;br /&gt;
=== Octamex ===&lt;br /&gt;
Homepage: http://www.octamex.de&lt;br /&gt;
&lt;br /&gt;
* Leiterplattenchemie (Entwickler, Ätzmittel, CRC-Sprays)&lt;br /&gt;
* Chemisch Zinn&lt;br /&gt;
* Lötstopp-Laminat, Tentingresist, Bestückungsdruck&lt;br /&gt;
* Bungard Basismaterial in 0,5mm 1,0mm 1,5mm Dicke und 18µm, 35µm, 70µm Kupfer&lt;br /&gt;
* Bungard Alucorex für 19&amp;quot; Frontplatten&lt;br /&gt;
* Bungard Cotherm, Alukernbasismaterial&lt;br /&gt;
* Funkmodule 434MHz, 868MHz, 2.4GHz&lt;br /&gt;
* Löttechnik und Zubehör&lt;br /&gt;
* Gehäuse aller Art&lt;br /&gt;
* Messgeräte und Labornetzteile&lt;br /&gt;
* aktive, passive u. mechanische Bauelemente (Widerstände, Kondensatoren, Transistoren, Logik-ICs etc.)&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Lieferung auch ins Ausland&lt;br /&gt;
* Versandkosten ab 4,50EUR&lt;br /&gt;
* Liefert nur gegen Vorkasse, ausser für Bestandskunden, die schon häufig bestellt haben&lt;br /&gt;
* Zahlung mit EC-Pay oder Kreditkarte nur gegen Aufschlag (bis zu 5%)&lt;br /&gt;
&lt;br /&gt;
=== Online Batterien ===&lt;br /&gt;
Homepage: http://www.online-batterien.de&lt;br /&gt;
&lt;br /&gt;
* Allerlei günstige Batterien &amp;amp; Akkus vieler Marken&lt;br /&gt;
* z.&amp;amp;nbsp;B. &#039;&#039;&#039;40 Stk.&#039;&#039;&#039; DURACELL PLUS LR6 AA 11,59€ (Jan 2010)&lt;br /&gt;
* Beleuchtungsartikel&lt;br /&gt;
* USV&lt;br /&gt;
* Versand ab 3,90€&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;
=== PCB-Soldering ===&lt;br /&gt;
&lt;br /&gt;
Homepage, Online-Shop: http://www.pcb-soldering.co.uk&lt;br /&gt;
eBay: http://www.allendale-stores.co.uk&lt;br /&gt;
Firmen-Homepage: http://www.allendale-elec.co.uk&lt;br /&gt;
&lt;br /&gt;
* [http://www.aoyue.com/en/products.asp Aoyue] Lötstationen und preiswertes Zubehör (Lötspitzen) für diese. Bei Aoyue-Zubehör bessere Preise (Stand 10/2008) als [[#WilTec_Wildanger_Technik_GmbH|WilTec]]&lt;br /&gt;
* Schnelle Lieferung&lt;br /&gt;
* Dank [http://www.zoll.de/b0_zoll_und_steuern/a0_zoelle/a1_grundlage_zollrecht/b0_zollgebiet/index.html EU Binnenmarkt] nur britische Mehrwertsteuer (VAT), kein Zoll, keine [http://www.zoll.de/b0_zoll_und_steuern/a3_einfuhrumsatzsteuer/index.html Einfuhrumsatzsteuer] fällig.&lt;br /&gt;
* Zwei von drei E-Mails wurden nicht beantwortet&lt;br /&gt;
* Versandart wurde eigenmächtig von &amp;quot;Standard&amp;quot; auf teureres &amp;quot;Signed for&amp;quot; (Einschreiben) geändert&lt;br /&gt;
&lt;br /&gt;
=== Pollin Electronic ===&lt;br /&gt;
Homepage: http://www.pollin.de&lt;br /&gt;
&lt;br /&gt;
* Günstige Restposten aller Art (z.&amp;amp;nbsp;B. &amp;quot;250 g verschiedene ICs&amp;quot; u.dgl.)&lt;br /&gt;
* Produktkategorien:&lt;br /&gt;
** Computer und Zubehör&lt;br /&gt;
** Telefone und Zubehör&lt;br /&gt;
** Antennentechnik&lt;br /&gt;
** HiFi/Car-HiFi/Video/TV&lt;br /&gt;
** Stromversorgung&lt;br /&gt;
** Lichttechnik&lt;br /&gt;
** Messtechnik / Uhren&lt;br /&gt;
** Haustechnik&lt;br /&gt;
** Werkstatt&lt;br /&gt;
** Bauelemente&lt;br /&gt;
** KFZ- und Zweirad&lt;br /&gt;
** Motoren&lt;br /&gt;
** Bausätze&lt;br /&gt;
** Fundgrube&lt;br /&gt;
* Produkte teils schnell ausverkauft &lt;br /&gt;
* Qualität schwankend. Man kann gute Schnäppchen machen aber auch reinfallen. Umtausch ist dann aber problemlos.&lt;br /&gt;
* Es wird öfters von sorgloser Verpackung berichtet (empfindliche und schwere Produkte besser nicht zusammen bestellen). Reklamationen bei Beschädigungen werden freundlich behandelt.&lt;br /&gt;
* Lieferzeit i.d.r. 2-3 Werktage / knappe Woche bei neuer Sonderliste&lt;br /&gt;
* Ladengeschäft in 85104 Pförring&lt;br /&gt;
* Versandkosten  innerhalb Deutschlands 4,95€&lt;br /&gt;
* Zahlung per Nachnahme (+2,50 €), Bankeinzug, Vorkasse, &#039;&#039;SOFORT&#039;&#039;-Überweisung oder PayPal&lt;br /&gt;
&lt;br /&gt;
=== proma / Isel ===&lt;br /&gt;
Homepage: http://www.isel.com/en/proma_systro.php&lt;br /&gt;
&lt;br /&gt;
The proMa systro GmbH has completed its business transactions since the 20th February 2009.&lt;br /&gt;
* Nachfolger: http://idimod.iselshop.de/&lt;br /&gt;
* Nachfolger für Prototypenzubehör: http://www.gie-tec.de/index.php&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
* fotobeschichtete Leiterplatten Platinenfrästechnik&lt;br /&gt;
* Chemikalien für die Platinenherstellung: Ätzmittel, Flussmittel für Lötanlagen, etc.&lt;br /&gt;
* Profilgehäuse, u.a. von Conrad und Reichelt vertrieben&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== QRP-project ===&lt;br /&gt;
Homepage: http://www.qrpshop.de/&lt;br /&gt;
&lt;br /&gt;
* Bausätze vor allem einfache Kurzwellen-Funkgeräte&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: http://www.reichelt.de&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.&amp;amp;nbsp;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€ wert ist).&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen, dass man auch eine Teillieferung akzeptiert. (Laut Auskunft dauert das länger, besser nach der Inet-Bestellung anrufen und nicht lieferbare Teile aus der Bestellung streichen lassen)&lt;br /&gt;
* Lieferzeiten normalerweise 2 - 4 Arbeitstage&lt;br /&gt;
* niedrige Preise (aber unbedingt Qualität des Artikel checken)&lt;br /&gt;
* Versandkosten 5,60€ (Deutschland); 6,95€ Österreich; Schweiz 16€; Italien 13,95€ EU 15 - 19€;&lt;br /&gt;
* 10€ Mindestbestellwert für alle Länder&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
* holt sich auch ohne Erlaubnis Bankauskünfte bei großen Bestellungen ein&lt;br /&gt;
&lt;br /&gt;
=== RF Microwave ===&lt;br /&gt;
Homepage: http://http://www.rfmicrowave.it/&lt;br /&gt;
&lt;br /&gt;
* Ausschliesslich HF Bauelemente&lt;br /&gt;
* riesige Auswahl an Bauteilen für den Mikrowellenbereich&lt;br /&gt;
* Bestellung nur nach Registrierung im Shop&lt;br /&gt;
* Schnelle Lieferung&lt;br /&gt;
* Firmensitz in Italien&lt;br /&gt;
* Teilweise englischer Shop&lt;br /&gt;
&lt;br /&gt;
=== RFW Elektronik ===&lt;br /&gt;
Homepage: http://www.rfw-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* HF Bauelemente&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: http://www.ribu.at&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;
* innerhalb Österreichs 4,90&amp;amp;#8364; Versandkosten, ab 80,- keine Versandkosten&lt;br /&gt;
* ausserhalb Österreichs 13&amp;amp;#8364; Versandkosten, ab 225&amp;amp;#8364; versandkostenfrei&lt;br /&gt;
* liefert auch an Privatkunden&lt;br /&gt;
* Mindestbestellwert innerhalb Österreichs 10&amp;amp;#8364;, ausserhalb 30&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Richardson Electronic ===&lt;br /&gt;
Homepage: http://www.richardsonrfpd.com/&lt;br /&gt;
&lt;br /&gt;
* Hochfrequenz-Halbleiter, HF-Röhren,&lt;br /&gt;
&lt;br /&gt;
=== Riedl Elektronik ===&lt;br /&gt;
Homepage: http://www.riedl-electronic.at&lt;br /&gt;
&lt;br /&gt;
* großes Angebot v.a. ICs und Trafos&lt;br /&gt;
* recht günstig&lt;br /&gt;
* Rabatt für Schüler/Student&lt;br /&gt;
* Versand nach AT: 3,95€ bis 1kg, ab 100€ frei Haus&lt;br /&gt;
* Versand AT über 1kg sowie Ausland: Nach Aufwand (wird nicht direkt angezeigt)&lt;br /&gt;
&lt;br /&gt;
=== RLX COMPONENTS s.r.o. ===&lt;br /&gt;
Homepage: http://www.rlx.sk&lt;br /&gt;
&lt;br /&gt;
* Man spricht Deutsch&lt;br /&gt;
* Messgeräte, Mikrocontroller-Boards, Bauelemente&lt;br /&gt;
&lt;br /&gt;
=== RM Computertechnik GmbH ===&lt;br /&gt;
Homepage: http://www.rm-computertechnik.de&lt;br /&gt;
&lt;br /&gt;
* Kerngeschäft ist PC-Technik, aber auch großes Sortiment an Kabeln, Litzen und Steckverbindern&lt;br /&gt;
* handelt auch mit einigen Bauelementen, wie LED&#039;s&lt;br /&gt;
&lt;br /&gt;
=== Robotikhardware===&lt;br /&gt;
Homepage: http://www.robotikhardware.de&lt;br /&gt;
&lt;br /&gt;
* Microcontroller&lt;br /&gt;
* Entwicklungsboards&lt;br /&gt;
* Sensoren&lt;br /&gt;
* Robotik-Zubehör&lt;br /&gt;
* günstige Angebote für Hobbyelektroniker&lt;br /&gt;
* auch einzelne Platinen&lt;br /&gt;
&lt;br /&gt;
=== Robotik-Teile.de===&lt;br /&gt;
Homepage: http://www.robotik-teile.de&lt;br /&gt;
&lt;br /&gt;
* Große Auswahl an Elektronik Produkten &lt;br /&gt;
* Microcontroller, Sensoren, Zubehör, u.v.m.&lt;br /&gt;
* Versandkosten betragen immer 4,90 €&lt;br /&gt;
* Zahlbar ber PayPal, Sofortüberweisung, Vorkasse und Nachnahme&lt;br /&gt;
&lt;br /&gt;
=== Benno Rößle Elektronik ===&lt;br /&gt;
Homepage: http://www.roessle-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Masten, Antennen, Befestigungsmat.,Zubehör, Geräte, Anpassteile, HF-Stecker&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: http://de.rs-online.com&lt;br /&gt;
&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer und an Studenten. Bei Internetbestellungen wird per Mail nach Belegen gefragt.&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;
* Preise wurden angepasst, gute Preis/Leistung&lt;br /&gt;
* Preis im Onlineshop sind ohne MwSt angegeben&lt;br /&gt;
* Bei Onlinekauf ab 50 Euro ist der Versand kostenfrei, ohne Mindesbestellwert.&lt;br /&gt;
* Notify-Me Service für Produktabkündigung&lt;br /&gt;
* Auch größere Stückzahlen über Allied möglich&lt;br /&gt;
* Relativ große Auswahl an Sortimenten (Widerstände, Kondensatoren), Einzelteile können teilweise nachgekauft werden&lt;br /&gt;
* Verfügbarkeitsanzeige im Internet ist ziemlich hilfreich&lt;br /&gt;
* Nützliche Tipps zum Thema RoHS&lt;br /&gt;
* Macht anscheinend Abfragen bei SCHUFA &amp;amp; Co. ohne Einverständnis oder Hinweis in den AGB.&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;
* Bezahlung auch mit Kreditkarte möglich&lt;br /&gt;
* Versandkosten innerhalb Deutschlands ab 3,35&amp;amp;#8364;, innerhalb Europas ab 6&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Sasco Holz ===&lt;br /&gt;
Homepage: http://www.sasco.de&lt;br /&gt;
&lt;br /&gt;
* Wie Spoerle eine Tochter von Arrow. &lt;br /&gt;
* Distributor für Analog Devices... &lt;br /&gt;
* Liefert wie Spoerle und Arrow in Deutschland nicht an Privatkunden.&lt;br /&gt;
&lt;br /&gt;
=== Sat-Schneider ===&lt;br /&gt;
Homepage: http://www.sat-schneider.de&lt;br /&gt;
* Bauteile, Ersatzteile  Online-Shop&lt;br /&gt;
* Baugruppen zum Empfang des Digitalen Kurzwellenrundfunks DRM&lt;br /&gt;
&lt;br /&gt;
=== Satistronics ===&lt;br /&gt;
Homepage: http://www.satistronics.com&lt;br /&gt;
&lt;br /&gt;
* typischer &amp;quot;China-Versender&amp;quot;, mit allen Vor- und Nachteilen&lt;br /&gt;
* Lieferzeit bei Standardversand sehr lange (etwa 1 Monat nach D), aber schnellere Lieferung gegen Aufpreis möglich&lt;br /&gt;
* tritt auch bei eBay in Erscheinung ([http://stores.ebay.de/satistronicsstore eBay-Shop]), die Preise dort sind in der Regel aber etwas höher als im Online-Shop&lt;br /&gt;
&lt;br /&gt;
=== Otto Schubert GmbH ===&lt;br /&gt;
Homepage: http://www.schubert-gehaeuse.de&lt;br /&gt;
&lt;br /&gt;
* Kein Online-Shop. Bestellungen nur per Telefon, Fax oder E-Mail &lt;br /&gt;
* Weissblechgehäuse, Gerätegehäuse, wetterfeste Gehäuse&lt;br /&gt;
* Drehkondensatoren&lt;br /&gt;
* Sonderanfertigungen&lt;br /&gt;
* ansässig in 90574 Roßtal&lt;br /&gt;
&lt;br /&gt;
=== Schramm-Software ===&lt;br /&gt;
Homepage: http://www.schramm-software.de/bausatz/&lt;br /&gt;
* Online-Shop, bietet Elektronik-Bausätze mit Mikrocontrollern&lt;br /&gt;
* Bausätze als Lehrmaterial geeignet, da ausführliches Begleitheft mitgeliefert wird (Aufbauanleitung, Schaltung, Controllerprogramm, Experimente...)&lt;br /&gt;
* bisher nur ein relativ kleines Sortiment, soll ergänzt werden&lt;br /&gt;
* Versandkosten innerhalb Deutschlands 2,50 &amp;amp;#8364;, innerhalb der EU 3,50 &amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: http://www.schukat.com&lt;br /&gt;
&lt;br /&gt;
* persönlicher Ansprechpartner / kein callcenter&lt;br /&gt;
* liefert nicht an privaten Endverbraucher, nur b2b&lt;br /&gt;
* mehr als 22.000 aktive, passive und elektromechanische Bauteile in kleinen, mittleren und größeren Mengen ab Lager lieferbar.&lt;br /&gt;
* nicht alle Bauteile in Einzelstückzahlen verfügbar. &lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch PIC, ATMEGA, AVR, usw...)&lt;br /&gt;
* größter MeanWell und Sunon Distributor in Europa&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* stündlich aktuelle Preise und Verfügbarkeit im Internet, ebenso Bilder von Gehäusefootprints u.dgl.&lt;br /&gt;
* Abholung in Monheim am Rhein nach Vereinbarung möglich&lt;br /&gt;
* Versandkosten innerhalb Deutschlands 5,50EUR bis 31,5kg per DPD)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: http://www.schuricht.de&lt;br /&gt;
&lt;br /&gt;
* deutscher Ableger der Distrelec- (Elektronik) und Disdata-Gruppe (Computertechnik)&lt;br /&gt;
* Liefert auch an Privatkunden (getrennte AGBs für gewerbliche und Privatkunden, Lieferung an Privat per Nachnahme: Versandkosten ab 6,54€ plus 4,76€ Nachnahmegebühr).&lt;br /&gt;
** Online-Bestellung von Privatkunde scheiterte daran, dass die  Onlineshop-Bestellformulare nur für gewerbliche Kunden ausgelegt sind und der Onlineshop Bestellungen ohne Firmenangaben nicht annimmt oder gar mit einer internen Fehlermeldung quittierte.&lt;br /&gt;
**Online Bestellung mit &amp;quot;Privat&amp;quot; als Firmenangabe funktionierte einwandfrei.&lt;br /&gt;
**Telefonische Bestellung von Privat funktioniert. Nette, freundliche Behandlung am Telefon, kein Callcenter. Versprochener Rückruf erfolgte mit gewünschten Informationen. Neben Nachnahme wurde für einen relativ teuren Artikel persönliche Abholung angeboten. Angegebene Lieferfrist wurde leicht unterschritten.&lt;br /&gt;
* Papierkatalog über 2000 Seiten, durchgehend farbig, nur für Geschäftskunden erhältlich.&lt;br /&gt;
* Ziemlich teuer&lt;br /&gt;
&lt;br /&gt;
=== SC-Shop ===&lt;br /&gt;
Homepage: http://www.sc-shop.de&lt;br /&gt;
&lt;br /&gt;
* Verkauf ausschließlich an gewerbliche Kunden&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* auf Anfrage spezielle Teilebeschaffung&lt;br /&gt;
* Bestellung auch als Gast&lt;br /&gt;
* schneller Versand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schuro Elektronik GmbH ===&lt;br /&gt;
Homepage: http://www.schuro.de&lt;br /&gt;
&lt;br /&gt;
* Elektronische Bauelemente und Bauteile für den Audio- und Lautsprecherbau (Kondensatoren, Spulen u.dgl.)&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Versandkosten innerhalb Deutschlands gewichtsabhängig ab 5,75&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: http://www.segor.de&lt;br /&gt;
&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 AG ===&lt;br /&gt;
Homepage: http://www.spezial.de&lt;br /&gt;
&lt;br /&gt;
* Distributor&lt;br /&gt;
* Laut AGB auch Verkauf an Privat.&lt;br /&gt;
* Große Verpackungseinheiten/Mindestbestellmengen pro Bauteil&lt;br /&gt;
* Versandkosten pauschal 9,- €  (Deutschland) (Stand 08/2008)&lt;br /&gt;
&lt;br /&gt;
=== Small Control Shop ===&lt;br /&gt;
Homepage: http://www.small-control.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Bernd Walter Computer Technology&amp;quot;&lt;br /&gt;
* kleines Lieferprogramm aber ein paar interessante Produkte&lt;br /&gt;
&lt;br /&gt;
=== Simple Development Shop ===&lt;br /&gt;
Homepage: http://simpledevelopment.de/shop/&lt;br /&gt;
&lt;br /&gt;
* Entwicklungsboards&lt;br /&gt;
* Ausgesuchte Bauteile&lt;br /&gt;
* Teilweise spezielle Boards &lt;br /&gt;
* Ab 50€ Versandkostenfrei in Deutschland&lt;br /&gt;
&lt;br /&gt;
=== SMG Diffusion - F1GE ===&lt;br /&gt;
Homepage: http://www.smgdiffusion.com&lt;br /&gt;
( Seite nur französisch )&lt;br /&gt;
&lt;br /&gt;
* Videotechnik, &lt;br /&gt;
* 1,2 GHz / 2,4GHz Module&lt;br /&gt;
* Gebraucht-Messgeräte HP, Tek, Philips  u.a.&lt;br /&gt;
* GHz-Halbleiter&lt;br /&gt;
* Koax-Adapter&lt;br /&gt;
* Antennen&lt;br /&gt;
&lt;br /&gt;
=== Spoerle ===&lt;br /&gt;
Homepage: http://www.spoerle.de&lt;br /&gt;
&lt;br /&gt;
* Früher eine Tochterfirma von Arror. Mittlerweile komplett in Arrow aufgegangen, Webseite leitet auf Arrow um.&lt;br /&gt;
* Aus dem Webshop: &amp;quot;Unser Angebot richtet sich nur an Kaufleute und nicht an Verbraucher.&amp;quot;&lt;br /&gt;
* Wenn es wirklich über Arrow sein muss, dann kann man es als Privatperson bei Arrow Electronics North American Components http://www.arrownac.com/ versuchen, die sich normalerweise nicht weigern ihre Produkte zu verkaufen. Allerdings muss man mit großen Mindestmengen (z.&amp;amp;nbsp;B. BC547 in Schritten von 2000 Stück) und hohen Kosten rechnen.&lt;br /&gt;
:Zu den Kosten gehören zum Beispiel ein mehrfacher Mindermengenzuschlag (&#039;&#039;$10 handling charge will be added to each line item less than $30&#039;&#039;), eine satte &#039;&#039;handling and energy fee of $10.22&#039;&#039; (mehr als 10x zu hoch wie die vergleichbare Gebühr für amerikanische Besteller), hohe Versandkosten (ab $20 nach Deutschland). Dazu kommen die üblichen Kosten für den Import aus dem Ausland (Einfuhrumsatzsteuer, Kreditkartengebühr, ...)&lt;br /&gt;
&lt;br /&gt;
=== SR-Systems ===&lt;br /&gt;
Homepage: http://www.sr-systems.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen für Digital-TV, Sende- und Empfangstechnik&lt;br /&gt;
* DVB-S, DVB-T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Strixner&amp;amp;Holzinger ===&lt;br /&gt;
Homepage: http://www.sh-halbleiter.de&lt;br /&gt;
&lt;br /&gt;
* Ladengeschäft in München&lt;br /&gt;
* Versand &lt;br /&gt;
* riesiges Angebot an Halbleiter, auch schwer beschaffbare&lt;br /&gt;
* Online-Shop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TAUTEC-ELECTRONICS ===&lt;br /&gt;
Homepage: http://www.tautec-electronics.de&lt;br /&gt;
&lt;br /&gt;
* Online Shop für aktive elektronische Bauelemente&lt;br /&gt;
* günstige Preise (Vorsicht, Preisangaben enthalten keine Mehrwertsteuer) aber Mindestbestellwert 100 Euro&lt;br /&gt;
* alle Artikel ab Lager lieferbar, daher kurze Wartezeiten&lt;br /&gt;
* weltweiter Versand&lt;br /&gt;
* zahlreiche Mengenrabatte&lt;br /&gt;
* viele Ersatzteile aus dem Audio-, Car-HiFi und TV-Bereich&lt;br /&gt;
&lt;br /&gt;
=== TCB-Versand ===&lt;br /&gt;
Homepage: http://www.tcb-versand.de&lt;br /&gt;
&lt;br /&gt;
* insbesondere für Modellbauer ein sehr interresantes Sortiment&lt;br /&gt;
* Stecker,Kabel etc. recht günstig und kleine Mengen abnehmbar &lt;br /&gt;
* Lieferung normal zwischen 1 und 3 Tage&lt;br /&gt;
* leider nur Online-Shop&lt;br /&gt;
&lt;br /&gt;
=== TecHome.de Online-Shop ===&lt;br /&gt;
Hompage: http://www.techome.de/index.html&lt;br /&gt;
&lt;br /&gt;
=== Tec-Shop (Wolfgang Rompel Elektronik) ===&lt;br /&gt;
Homepage: http://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;
=== Technik-Welt / Industrieshop.at ===&lt;br /&gt;
Homepage: http://www.industrieshop.at&lt;br /&gt;
&lt;br /&gt;
* Laut Homepage richtet man sich &amp;quot;an den industriellen Kunden&amp;quot;. Laut AGB sieht man das jedoch nicht so eng, Zitat:&lt;br /&gt;
:: &#039;&#039;TW schließt online Verträge nur mit Kunden ab, die natürliche oder juristischen Personen sind, die ihren Wohnsitz oder Sitz in Österreich, einem Mitgliedsstaat der Europäischen Union (EU25) oder der Schweiz haben.&#039;&#039;&lt;br /&gt;
* [[#Farnell|Farnell]] Teile&lt;br /&gt;
* In Österreich&lt;br /&gt;
* Schnelle Lieferung (2 Tage)&lt;br /&gt;
&lt;br /&gt;
=== Teske electronics ===&lt;br /&gt;
Homepage: http://www.teske-electronics.de&lt;br /&gt;
&lt;br /&gt;
* Noch relativ übersichtliches Produktsortiment (Dez. 2012) aber schon einige interessante Teile&lt;br /&gt;
* Bisher überwiegend SMD Bauteile&lt;br /&gt;
* Kein Mindestbestellwert&lt;br /&gt;
* Versandkosten ab 2,85€&lt;br /&gt;
* Lieferung nur innerhalb Deutschlands&lt;br /&gt;
* Wunschliste für neue Produkte&lt;br /&gt;
* Beschaffung von Bauteilen möglich, die nicht im Shop angeboten werden&lt;br /&gt;
* Zahlung per Vorkasse, PayPal, Nachnahme oder Rechnung (für Stammkunden) möglich.&lt;br /&gt;
&lt;br /&gt;
=== Thinkembedded.ch ===&lt;br /&gt;
Homepage: http://www.thinkembedded.ch&lt;br /&gt;
&lt;br /&gt;
* in der Schweiz (auch Abholung möglich), Versand CH ab SFr 12.- (bis 5kg)&lt;br /&gt;
* keine Mindestbestellmenge, Bezahlung: Barbezahlung, Rechnung, PayPal &lt;br /&gt;
* Demoboarde von div. Herstellern (Olimex, ST, ARM-Keil, ETT, Conitex)&lt;br /&gt;
* Demoboarde mit ARM (Cortex M)uC von ST, NXP, Energy Micro&lt;br /&gt;
* Demoboarde mit ARM Cortex A uC von Olimex&lt;br /&gt;
* Keil Debugger/Programmer Ulink ME/2/Pro&lt;br /&gt;
* MSP4300 Demoboard&lt;br /&gt;
* PIC Demoboarde und Programmer&lt;br /&gt;
* AVR Demoboarde und Programmer&lt;br /&gt;
* Messgeräte (BMC Messsysteme, Intronix LogicPort)&lt;br /&gt;
* Learning Kits&lt;br /&gt;
* Mehrsprachig (E, D, F), Preise in SFR / Euro&lt;br /&gt;
&lt;br /&gt;
=== TIGAL KG ===&lt;br /&gt;
Homepage: http://www.tigal.com&lt;br /&gt;
&lt;br /&gt;
* Boards und Tools für Embedded-Elektronik&lt;br /&gt;
* In Österreich &lt;br /&gt;
* Versandkosten ab € 7,00 in Österreich, ab € 10,00 nach Deutschland.&lt;br /&gt;
* Preisangaben ohne MWSt. Für Privatkunden kommen 20% österreichische Mehrwertsteuer hinzu.&lt;br /&gt;
* U.a. ZeroLogic Logik-Analysatoren.&lt;br /&gt;
&lt;br /&gt;
=== TME (Transfer Multisort Elektronik) ===&lt;br /&gt;
Homepage: http://www.tme.eu/de&lt;br /&gt;
&lt;br /&gt;
*breites Sortiment&lt;br /&gt;
*parametrische Suche&lt;br /&gt;
*Verkauf über die deutsche Tochter (19 % statt 21 % polnische Umsatzsteuer)&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop / AIR Electronics GmbH ===&lt;br /&gt;
Homepage: http://www.trade-shop.de&lt;br /&gt;
&lt;br /&gt;
* Trotz knackiger Sprüche auf der englischen Version der Webseite (&amp;quot;Electronic Components Superstore&amp;quot;) eher kleines Angebot elektronischer Bauteile&lt;br /&gt;
* 20 Euro Mindestbestellmenge (Stand Februar 2008)&lt;br /&gt;
* ab 6,90 Euro Versandkosten (Deutschland, bis 1kg)  (Stand Februar 2008)&lt;br /&gt;
&lt;br /&gt;
=== Trenkenchu &amp;amp; Stadler GbR ===&lt;br /&gt;
Homepage: http://www.ts-audio.de&lt;br /&gt;
&lt;br /&gt;
* die meisten Artikel sind deutlich teurer als der Marktpreis, es sind jedoch auch Schnäppchen dabei, z.B. HDMI-Kabel&lt;br /&gt;
&lt;br /&gt;
=== Trenz-electronic ===&lt;br /&gt;
Homepage: http://www.trenz-electronic.de&lt;br /&gt;
&lt;br /&gt;
* FPGA-Boards mit Xilinx-FPGAs (Xilinx, Digilent, ...) und Zubehör&lt;br /&gt;
* Weitere teils sehr spezielle Produkte, auch Eigen-Entwicklungen&lt;br /&gt;
* Liefert auch an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== TV-Ersatzteile ===&lt;br /&gt;
Homepage: http://www.tversatzteile.de&lt;br /&gt;
&lt;br /&gt;
* TV-, Audio-, Video-Ersatzteile, Aktive / Passive Bauteile&lt;br /&gt;
* Fernbedienungen Haushaltstechnik&lt;br /&gt;
&lt;br /&gt;
=== UKW-Berichte ===&lt;br /&gt;
Homepage: http://www.ukw-berichte.de&lt;br /&gt;
&lt;br /&gt;
* Antennen, Bauteile, Bausätze, Literatur für Amateurfunk&lt;br /&gt;
* ansässig in 91081 Baiersdorf&lt;br /&gt;
&lt;br /&gt;
=== Voelkner ===&lt;br /&gt;
Homepage: http://voelkner.de&lt;br /&gt;
* Großer Teil des Conrad-Programms, identische Nummern, identische Aufkleber auf der Ware, Preise weitgehend identisch oder nur ein paar Cent abweichend, bei bestimmten Artikelgruppen (z.B. Werkzeug) aber auch bis zu 25% billiger&lt;br /&gt;
* Versandkosten Deutschland: 4,95€; ab 25€ Warenwert und Sofortüberweisung.de versandkostenfrei / Versandkosten-Flatrate für 15€ pro Jahr&lt;br /&gt;
* Versandkosten EU: 9,95€&lt;br /&gt;
* Möglichkeit der Versandkostenflatrate (D): Einmalig 14,95€ / gültig für ein Jahr&lt;br /&gt;
* Legt jeder Bestellung gleich wieder einen Gutschein über 5€ bei MBW 25€ bei (Flat nur bei häufigen, kleinen Bestellungen sinnvoll); außerdem kommt etwa alle 2-3 Monate selbiger Gutschein + versandkostenfreie Lieferung per Mail, ebenfalls MBW 25€&lt;br /&gt;
* Verpackungsqualität wechselnd, mal brauchbar, mal eher Pollin-Niveau. Selbst kleine Bestellungen, die gefahrlos per Brief/Großbrief verschickt werden könnten werden in einem großen Paket versendet.&lt;br /&gt;
&lt;br /&gt;
=== VOTI Webshop ===&lt;br /&gt;
Homepage: http://www.voti.nl/shop/catalog.html&lt;br /&gt;
&lt;br /&gt;
* relativ kleines Lieferprogramm&lt;br /&gt;
* einige interessante Restposten (Surplus)&lt;br /&gt;
&amp;lt;!-- nicht mehr: * verkauft auch VID/PID-Paare für USB-Applikationen --&amp;gt;&lt;br /&gt;
* Sitz in Amersfoort, Niederlande&lt;br /&gt;
&lt;br /&gt;
=== Walter elektronik ===&lt;br /&gt;
Homepage: http://www.walter-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Röhren&lt;br /&gt;
&lt;br /&gt;
=== Waschbär Soft 2010 ===&lt;br /&gt;
Homepage: http://www.xn--waschbr-soft-2010-vqb.de&lt;br /&gt;
&lt;br /&gt;
* Onlineversandhaus für Unterhaltungselektronik, &amp;quot;Haushaltselektronik&amp;quot;, Computer und -zubehör&lt;br /&gt;
* keine elektronischen Bauteile&lt;br /&gt;
&lt;br /&gt;
=== Watterott electronic GmbH===&lt;br /&gt;
Homepage: http://www.watterott.com&lt;br /&gt;
&lt;br /&gt;
* Distributor für Adafruit, Arduino, BeagleBoard/PandaBoard, Embedded Artists, GHI, Olimex, Parallax, Pololu, Seeed Studio, Solarbotics, SparkFun... &lt;br /&gt;
* Entwicklungskits von Atmel, Cypress, Freescale, Microchip, NXP, STM, TI...&lt;br /&gt;
* Spezialbauteile von Davicom, FTDI, VLSI, WIZnet...&lt;br /&gt;
* Bungard Basismaterial + Chemie&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Zahlung: Vorkasse, Sofortüberweisung, PayPal, Nachnahme, Kreditkarte (Visa/Mastercard), Rechnung (nur gewerbliche Kunden)&lt;br /&gt;
* Versandkosten Dtl. (DHL): &lt;br /&gt;
** bis  75 EUR Warenwert: 3,50 Euro&lt;br /&gt;
** ab   75 EUR Warenwert: versandkostenfrei&lt;br /&gt;
* Versandkosten EU (DHL): &lt;br /&gt;
** bis 150 EUR Warenwert: 10,00 Euro&lt;br /&gt;
** bis 250 EUR Warenwert:  8,90 Euro&lt;br /&gt;
** bis 500 EUR Warenwert:  5,95 Euro&lt;br /&gt;
** ab  500 EUR Warenwert:  versandkostenfrei&lt;br /&gt;
* Schneller, entgegenkommender Service&lt;br /&gt;
* in der &amp;quot;c&#039;t Hardware Hacks&amp;quot; 01/2013 ist ein Artikel über Stephan Watterott und seinen Online-Shop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
September 2012 sind bei Westfalia gerade mal zehn Bauteile unter &amp;quot;Elektronische Bauteile&amp;quot; gelistet&lt;br /&gt;
 &lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage Deutschland: http://www.westfalia.de&lt;br /&gt;
Homepage Österreich: http://www.westfalia-versand.at&lt;br /&gt;
&lt;br /&gt;
* Vor 85 Jahren in Hagen, Westfalen gegründet&lt;br /&gt;
* Elektronik nur ein kleiner Teil des Angebotes. Eher insgesamt Haushalts-, Werkstätten-, Agrar- und Gartenbedarf&lt;br /&gt;
* Elektroniksortiment stark schwankend. Momentan (Juni 2008) wenig Auswahl.&lt;br /&gt;
* Mindestbestellwert 18 €, bei Neukundenbestellungen mit Prämienanforderungen (wenig wertiges Geschenk) sogar 50 €.&lt;br /&gt;
* 4,95&amp;amp;#8364; Versandkosten, ab 150&amp;amp;#8364; Bestellwert versandkostenfrei&lt;br /&gt;
* Transportversicherung wird zusätzlich mit einem Zuschlag von 0,8% des Warenwertes berechnet.&lt;br /&gt;
* Einmalige Bestellung führte zu jahrelanger Zusendung von Werbung für Westfalia-Angeboten mit Gewinnspielen (Glücksnummern, Rubbellose, Glücksschlüssel, etc.)&lt;br /&gt;
* Verpackung ähnlich &amp;quot;sorgfältig&amp;quot; wie bei [[#Pollin_Electronic|Pollin Electronic]]. Übergroße Kartons, wenig Verpackungsmaterial, schweres Teil (Labornetzgerät) flog lose im Karton herum und zertrümmerte andere Ware.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WilTec Wildanger Technik GmbH ===&lt;br /&gt;
Homepage: http://shop.wiltec.info&lt;br /&gt;
&lt;br /&gt;
* Aoyue Lötgeräte (Heißluft, Löten, Entlöten), Netzteile, Werkzeuge&lt;br /&gt;
* Aoyue Zubehör (Lötspitzen, Heißluftdüsen), Ersatzteile&lt;br /&gt;
* Andere, nicht Elektronik-Angebote, wie KFZ-Tuningteile&lt;br /&gt;
* Versand. Bei Voranmeldung auch Lagerverkauf.&lt;br /&gt;
&lt;br /&gt;
=== Wüstens frag-jan-zuerst ===&lt;br /&gt;
Homepage: http://www.die-wuestens.de/dindex.htm&lt;br /&gt;
&lt;br /&gt;
* Röhrentechnik&lt;br /&gt;
* Hochspannungs-Spezialteile&lt;br /&gt;
&lt;br /&gt;
=== WIMO ===&lt;br /&gt;
Homepage: http://www.wimo.de&lt;br /&gt;
&lt;br /&gt;
* Große Auswahl an Amateurfunktechnik&lt;br /&gt;
&lt;br /&gt;
=== Zech DG0VE ===&lt;br /&gt;
Homepage: http://www.dg0ve.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen für Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Diverse ===&lt;br /&gt;
* http://www.chip-flip.com - Europäisches Bauelementesuchsystem, franchised Lieferantensuche, Datenblätter und viele nützliche Informationen&lt;br /&gt;
* http://www.ecomponents-store.com/ Elektronische Bauelemente kaufen - Hier finden Sie eine große Auswahl an elektronischen und elektromechanischen Bauelementen von über 40 Herstellern.&lt;br /&gt;
* http://www.franchised-distributors.eu/ - Finden Sie Vertragsdistributoren von über 800 Halbleiterherstellern für elektronische und elektromechanische Bauelemente.&lt;br /&gt;
&lt;br /&gt;
TODO: elektronik-fundgrube&lt;br /&gt;
&lt;br /&gt;
==Ebay-Shops==&lt;br /&gt;
&lt;br /&gt;
===Ego-China===&lt;br /&gt;
http://stores.ebay.de/Ego-China-Electronics   TFTs und LCDs &amp;lt;br /&amp;gt; Versand aus China (2-3 Wochen)&lt;br /&gt;
&lt;br /&gt;
===Sure-Electronics===&lt;br /&gt;
http://stores.ebay.de/Sure-Electronics   Highpower LEDs und Verstärker &amp;lt;br /&amp;gt;&lt;br /&gt;
Hat auch einen eigenen Shop: http://www.sureelectronics.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
Versand aus China&lt;br /&gt;
&lt;br /&gt;
===Ether-Deal===&lt;br /&gt;
http://stores.ebay.de/ether-deal   Unter sonstiges viele versch. Elektronik-teile &amp;lt;br /&amp;gt; Versand aus China&lt;br /&gt;
&lt;br /&gt;
===NooElec===&lt;br /&gt;
http://stores.ebay.de/NooElec USB-AVR Boards (mega32u2) und rgbled-matrizen &amp;lt;br /&amp;gt; Versand aus Kanada&lt;br /&gt;
&lt;br /&gt;
===Sine qua non surplus===&lt;br /&gt;
http://stores.ebay.de/Sinequanon-Surplus-Electronics Großbritannien&lt;br /&gt;
&lt;br /&gt;
==Messgeräte ==&lt;br /&gt;
=== Neue Messgeräte ===&lt;br /&gt;
&lt;br /&gt;
Viele der oben genannten Elektronikversender verkaufen auch Messgeräte. Darüber hinaus gibt es diverse Versender, die sich hauptsächlich oder ausschließlich auf Messgeräte spezialisiert haben. Allerdings verkaufen viele davon nicht an Privat.&lt;br /&gt;
&lt;br /&gt;
==== CalPlus GmbH ====&lt;br /&gt;
Homepage: http://www.calplus.de &amp;lt;br /&amp;gt;&lt;br /&gt;
Shop: http://www.scopeshop.de&lt;br /&gt;
&lt;br /&gt;
==== Cosinus ComputerMesstechnik ====&lt;br /&gt;
Homepage: http://www.cosinus.de&lt;br /&gt;
&lt;br /&gt;
* Nicht an Privat&lt;br /&gt;
&lt;br /&gt;
==== dataTec ====&lt;br /&gt;
Homepage: http://www.datatec.de&lt;br /&gt;
&lt;br /&gt;
* Große Auswahl&lt;br /&gt;
* &amp;lt;s&amp;gt;(Nicht an Privat)&amp;lt;/s&amp;gt; Bestellung von Privat problemlos möglich, Privatpersonen werden laut ABG per Vorkasse beliefert&lt;br /&gt;
* Studenten bekommen Rabatt, je nach dem, was bestellt wird&lt;br /&gt;
* Umständlicher Bestellvorgang, seitens DataTec teilweise auf dem Postweg -&amp;gt; Es dauert teil sehr lange bis die Ware ankommt&lt;br /&gt;
* Sehr freundlicher und kompetenter Service, per eMail als auch telefonisch&lt;br /&gt;
&lt;br /&gt;
==== Elektronik-Kontor Messtechnik GmbH ====&lt;br /&gt;
Homepage: http://www.ekomess.de&lt;br /&gt;
&lt;br /&gt;
==== Meilhaus Electronic GmbH ====&lt;br /&gt;
Homepage: http://www.meilhaus.de&lt;br /&gt;
&lt;br /&gt;
* Diverse Markenhersteller&lt;br /&gt;
* Eigenmarken&lt;br /&gt;
&lt;br /&gt;
==== PinSonne-Elektronik ====&lt;br /&gt;
Homepage: http://www.pinsonne-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Onlineshop&lt;br /&gt;
* Sehr kleines Sortiment&lt;br /&gt;
* UNI-T, RIGOL und andere asiatische Firmen&lt;br /&gt;
&lt;br /&gt;
==== PK elektronik Poppe GmbH ====&lt;br /&gt;
Homepage: http://www.pk-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* U.a. Fluke Distributor.&lt;br /&gt;
&lt;br /&gt;
====Präzitronic Hennig / Messgeräte Chemnitz====&lt;br /&gt;
Homepage: http://www.messgeraete-chemnitz.de&lt;br /&gt;
&lt;br /&gt;
* Verkauft explizit auch an Privat.&lt;br /&gt;
* Owon&lt;br /&gt;
* Selbst übersetzte deutsche Owon-Handbücher&lt;br /&gt;
* Fluke&lt;br /&gt;
* Extech&lt;br /&gt;
* Zusätzlich kleines Angebot an Gebrauchtgeräten&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ScopeShop Hamburg ====&lt;br /&gt;
&lt;br /&gt;
* Von CalPlus übernommen, siehe [[#CalPlus_GmbH|CalPlus]]&lt;br /&gt;
&lt;br /&gt;
==== SI Scientific Instruments GmbH ====&lt;br /&gt;
Homepage: http://www.si-scientific.de (Onlineshop) &amp;lt;br /&amp;gt;&lt;br /&gt;
Homepage: http://www.si-gmbh.de (komplettes Programm)&lt;br /&gt;
&lt;br /&gt;
* Onlineshop auf si-scientific.de&lt;br /&gt;
* Akzeptiert PayPal&lt;br /&gt;
 &lt;br /&gt;
==== SKY Messtechnik GmbH ====&lt;br /&gt;
Homepage: http://www.sky-messtechnik.de&lt;br /&gt;
&lt;br /&gt;
* Kein Onlineshop (E-Mail oder Telefon)&lt;br /&gt;
&lt;br /&gt;
==== TESTEC ====&lt;br /&gt;
Homepage: http://www.testec.info&lt;br /&gt;
&lt;br /&gt;
* Tastköpfe-Hersteller&lt;br /&gt;
* Hameg Vertriebspartner&lt;br /&gt;
* B+K Precision Generalimporteur&lt;br /&gt;
&lt;br /&gt;
==== Zeitech ====&lt;br /&gt;
Homepage: http://www.zeitech.de/shop/&lt;br /&gt;
&lt;br /&gt;
* Diverses (Rigol, Owon, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Gebrauchte Messgeräte ===&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt enthält Anbieter bei denen gebrauchte Messgeräte erhältlich sind.&lt;br /&gt;
&lt;br /&gt;
==== Astro Electronic ====&lt;br /&gt;
Homepage: http://www.astro-electronic.de&lt;br /&gt;
&lt;br /&gt;
==== HTB-Elektronik ====&lt;br /&gt;
Homepage: http://www.htb-elektronik.com&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
&lt;br /&gt;
==== IX Instrumex ====&lt;br /&gt;
Homepage: http://www.instrumex.de/index.cgi?User:LANGUAGE=de&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
&lt;br /&gt;
==== Christoph Lüders MessTechnik ====&lt;br /&gt;
Homepage: http://www.CLMT.de &amp;lt;br&amp;gt;&lt;br /&gt;
Online-Shop: http://www.shop-016.de/shop-CLMT.html &amp;lt;br&amp;gt;&lt;br /&gt;
eBay: http://myworld.ebay.de/c_h_r/&lt;br /&gt;
&lt;br /&gt;
* Hat 2010 die Restbestände von Förtig übernommen&lt;br /&gt;
&lt;br /&gt;
==== mbmt Messtechnik ====&lt;br /&gt;
Homepage: http://www.mbmt.com&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Verkauf nur an Gewerbetreibende&lt;br /&gt;
&lt;br /&gt;
==== Rosenkranz Elektronik ====&lt;br /&gt;
Homepage: http://www.rosenkranz-elektronik.de&amp;lt;br&amp;gt;&lt;br /&gt;
eBay Shop: http://stores.ebay.de/Rosenkranz-Elektronik-GmbH-Shop&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Auch auf eBay zu finden&lt;br /&gt;
&lt;br /&gt;
==== Helmut-Singer-Elektronik ====&lt;br /&gt;
Homepage: http://www.helmut-singer.de&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Verkauf auch an Privat&lt;br /&gt;
* An den meisten Samstagen im Jahr auch Lagerverkauf, sonst Versand&lt;br /&gt;
&lt;br /&gt;
==== Sphere ====&lt;br /&gt;
Homepage: http://www.sphere.bc.ca&amp;lt;br&amp;gt;&lt;br /&gt;
Messgeräte und Ersatzteile: http://www.sphere.bc.ca/test/index.html&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Ersatzteile&lt;br /&gt;
** Besonders bekannt für Tektronix-Ersatzteile&lt;br /&gt;
&lt;br /&gt;
==== Tektronix TekSelect ====&lt;br /&gt;
Homepage: http://www.tek.com/Measurement/tekselect/&lt;br /&gt;
&lt;br /&gt;
* Tektronix verkauft selber gebrauchte und überarbeitete Tektronix-Messgeräte unter dem Label &#039;&#039;TekSelect&#039;&#039;.&lt;br /&gt;
* Original Tektronix-Garantie&lt;br /&gt;
* Der Bestellvorgang nervt, man muss Kontaktaufnahme durch einen &amp;quot;Representative&amp;quot; erbeten.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;br /&gt;
* [[Lokale Elektroniklieferanten]]&lt;br /&gt;
* [[Eisenwarenversender]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&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;br /&gt;
&lt;br /&gt;
[[Kategorie:Lieferanten]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=80875</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=80875"/>
		<updated>2014-01-16T00:26:58Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Änderung 80852 von Tkroth (Diskussion) rückgängig gemacht: Benuitzer Tkroth ist der Betreiber von DES, die gelöschten Infos sind wichtig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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.&amp;amp;nbsp;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;
&#039;&#039;&#039;Diese Seite kann nur von angemeldeten Benutzern bearbeitet werden!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== AATiS ===&lt;br /&gt;
Homepage: http://www.aatis.de&lt;br /&gt;
&lt;br /&gt;
* Arbeitskreis Amateurfunk und Technik in der Schule e.V.&lt;br /&gt;
* Bausätze speziell auch für Elektronik-Anfänger, Schüler&lt;br /&gt;
* Literatur, Seminare für Lehrer &lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage: http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;kein&#039;&#039;&#039; Online-Shop!&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;
&amp;lt;!--&lt;br /&gt;
=== Adapterprofi ===&lt;br /&gt;
Homepage: http://www.adapterprofi.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Gehäuse, Netzteile&lt;br /&gt;
* Viele unterschiedliche HF-Adapter&lt;br /&gt;
* Seite aktuell nicht erreichbar (10.12.2011) ist wohl tot&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AK Modul Bus Computer GmbH ===&lt;br /&gt;
Homepage: http://www.ak-modul-bus.com/stat/produkte.html&lt;br /&gt;
&lt;br /&gt;
* Interfaces, Messmodule, Funktionsmodelle, Experimentiersysteme&lt;br /&gt;
* Entwicklungssysteme, Baugruppen, Elektor, Zubehör, Bauelemente&lt;br /&gt;
* Software, Lernpakete, Bücher, Sonderposten&lt;br /&gt;
&lt;br /&gt;
=== Aliexpress ===&lt;br /&gt;
Homepage: http://www.aliexpress.com&lt;br /&gt;
&lt;br /&gt;
* Allgeminer Market-Store aus China&lt;br /&gt;
* Günstige Arduinos, Adapterplatinen, Miniboards, etc.&lt;br /&gt;
* Vorsicht vor Fake-Transistoren und sehr günstigen Einzelbauteilen, die müssen nicht immer Original sein&lt;br /&gt;
* Zahlung: Per Kreditkarte, Absicherung über Aliexpress. Der Kaufpreis wird erst nach Bestätigung des Erhalts der Ware an den Lieferanten freigegeben&lt;br /&gt;
* Lieferzeit: Ca. 2-4 Wochen (kommt ja auch aus China oder Hongkong)&lt;br /&gt;
* Versandkosten: oft keine, wird im Angebot angegeben&lt;br /&gt;
* Zoll: normalerweise fällt für elektronische Bauteile kein Zoll an (alles bis 150€ ist zollfrei)&lt;br /&gt;
* Umsatzsteuer: ab 22€ (inkl. Versand) sind 19% Umsatzsteuer auf den Gesamtpreis beim Zoll zu zahlen (siehe www.zoll.de)&lt;br /&gt;
&lt;br /&gt;
=== Allpax ===&lt;br /&gt;
Homepage: http://www.allpax.de&lt;br /&gt;
&lt;br /&gt;
* Liefert auch an Privathaushalte&lt;br /&gt;
* Keine Elektronik an sich, aber ggf. nützliches Zubehör: Größeres, übersichtliches Sortiment an ESD-Beuteln und -Folien, offen und mit Zippverschluss, Pink Poly und Metallisiert (High Shield). Preislich über Farnell, dafür findet man sofort, was man sucht...&lt;br /&gt;
* außerdem Ultraschallreiniger, Waagen und Folienschweißgeräte, sowie viel Fachfremdes&lt;br /&gt;
* Versandkosten: 8,33€ nach Deutschland, diverse EU-Länder 17,85€, Schweiz 34,51€; Versandkostenfrei in D ab 178,50€&lt;br /&gt;
* Gewährt scheinbar auch Privatkunden die Zahlung per Rechnung; bei Bankeinzug 2% Rabatt, bei Vorkasse und Abholung 3%&lt;br /&gt;
&lt;br /&gt;
=== AME-Engineering ===&lt;br /&gt;
Homepage: http://www.ame-engineering.de&lt;br /&gt;
&lt;br /&gt;
* Hochfrequenz-Spezialitäten, Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Amidon ===&lt;br /&gt;
Homepage: http://www.amidon.de&lt;br /&gt;
&lt;br /&gt;
* Sehr großes Sortiment, vorallem für seltene Bauteile, z.&amp;amp;nbsp;B. Dioden&lt;br /&gt;
&lt;br /&gt;
=== Andy&#039;s Funkladen ===&lt;br /&gt;
Homepage: http://www.andyfunk.de&lt;br /&gt;
&lt;br /&gt;
* Alles für Amateur- und CB-Funk&lt;br /&gt;
* Bauteile und Gehäuse&lt;br /&gt;
&lt;br /&gt;
=== Anvilex ===&lt;br /&gt;
Homepage: http://shop.anvilex.com/index.html&lt;br /&gt;
&lt;br /&gt;
* Liefert sehr günstige Break-Out Boards für diverse Packages&lt;br /&gt;
* Hat einige einfache und günstige Programmer auch für FPGAs etc&lt;br /&gt;
&lt;br /&gt;
=== Atlantis Shop 24 ===&lt;br /&gt;
Homepage: http://www.atlantis-shop24.de&lt;br /&gt;
&lt;br /&gt;
* Elektronik nur ein kleiner Teil des Angebotes. Ansonsten eher Drogerie bzw. Haushaltsbedarf&lt;br /&gt;
&lt;br /&gt;
=== Atzert-Elektronik Versand ===&lt;br /&gt;
Homepage: http://www.atzert-elektronik.de&lt;br /&gt;
&lt;br /&gt;
Früher &#039;&#039;EFB-Electronic Versand&#039;&#039;, davor &#039;&#039;MEGAKICK Electronic Stores&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Mindestens schon der dritte Name und die dritte Webseite für den Endkunden-Versand von [[Elektronikversender#ETT|ETT]]. ETT liefert sonst nur an gewerbliche Kunden.&lt;br /&gt;
* Ladengeschäfte in Bielefeld, Braunschweig, Bremen, Hamburg und Berlin. &lt;br /&gt;
* Die Preise schwanken im Vergleich zu anderen Anbietern, welche ebenfalls ETT-importierte Produkte führen, mal nach oben, mal nach unten.&lt;br /&gt;
&lt;br /&gt;
=== Bassenberg Elektronik ===&lt;br /&gt;
Homepage: http://www.bassenberg.de&lt;br /&gt;
&lt;br /&gt;
* Ladengeschäfte in Braunschweig und Neumünster&lt;br /&gt;
* Beschafft auch nicht mehr gelistete und abgekündigte Bauteile&lt;br /&gt;
* Liefert auch an Privat&lt;br /&gt;
&lt;br /&gt;
=== Batronix ===&lt;br /&gt;
Homepage: http://www.batronix.com&lt;br /&gt;
* Grosses Sortiment an Geräten&lt;br /&gt;
* Bausätze für Microcontroller-Applikationen&lt;br /&gt;
* Liefert auch an Privat&lt;br /&gt;
&lt;br /&gt;
=== BAZ Spezialantennen ===&lt;br /&gt;
Homepage: http://www.spezialantennen.de&lt;br /&gt;
&lt;br /&gt;
* Antennen für Amateurfunk, ISM, WLAN usw.&lt;br /&gt;
&lt;br /&gt;
=== bed - elektronik ===&lt;br /&gt;
Homepage: http://www.bed-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Restposten aktive und passive Bauelemente&lt;br /&gt;
* sehr günstige Preise&lt;br /&gt;
* alles ab Lager lieferbar&lt;br /&gt;
* Versand an Privat&lt;br /&gt;
* ab 60 EUR versandkostenfrei&lt;br /&gt;
&lt;br /&gt;
=== Bfi-Optilas ===&lt;br /&gt;
Homepage: http://www.bfioptilas.de&lt;br /&gt;
&lt;br /&gt;
* Kein Onlineshop&lt;br /&gt;
* spezialisierter Distributor für Hochfrequenzhalbleiter und Optik&lt;br /&gt;
&lt;br /&gt;
=== BG-Electronics.de ===&lt;br /&gt;
Homepage: http://www.bg-electronics.de&lt;br /&gt;
&lt;br /&gt;
* Online Shop für aktive und passive elektronische Bauelememte&lt;br /&gt;
* günstige Preise&lt;br /&gt;
* alle Artikel ab Lager lieferbar, daher kurze Wartezeiten&lt;br /&gt;
* weltweiter Versand&lt;br /&gt;
* zahlreiche Mengenrabatte&lt;br /&gt;
* viele Ersatzteile aus dem Audio-, CarHiFi und TV-Bereich&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== B &amp;amp; M electronics ===&lt;br /&gt;
Homepage: http://www.bmelectronics.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Platinen und Baugruppen für Amateurfunk&lt;br /&gt;
Seite nicht erreichbar am 22.7.2012 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Box73 ===&lt;br /&gt;
Homepage: http://www.box73.de&lt;br /&gt;
&lt;br /&gt;
Onlineshop des Funkamateur.&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Bausätze, Literatur aus dem Amateurfunkbereich&lt;br /&gt;
* Preise sind O.K.&lt;br /&gt;
* Bestellungen werden nur Di und Do bearbeitet&lt;br /&gt;
* Ab 50 EUR bei Bankeinzug portofrei.&lt;br /&gt;
&lt;br /&gt;
=== Bürklin OHG ===&lt;br /&gt;
Homepage: http://www.buerklin.com&lt;br /&gt;
&lt;br /&gt;
* große Auswahl, hohe Verfügbarkeit&lt;br /&gt;
* sehr schneller Versand&lt;br /&gt;
* Ladengeschäft in Oberhaching (südlicher Landkreis München)&lt;br /&gt;
* &amp;lt;s&amp;gt;nur an gewerbliche Abnehmer (lt. AGB), private Abnehmer können dennoch im Ladengeschäft einkaufen&amp;lt;br&amp;gt;Angeblich versendet Bürklin seit November 2010 auch an Privatpersonen. Allerdings verlangt Bürklin weiterhin in Adressformularen die Eingabe eines Firmennamens &amp;lt;br&amp;gt;Geben Sie einen Wert in das Feld &amp;quot;Firma&amp;quot; ein.&amp;lt;br&amp;gt;Daher ist diese Information eher mit Vorsicht zu genießen.&amp;lt;/s&amp;gt;&amp;lt;br&amp;gt;Mittlerweile muss man auch keinen Firmennamen mehr eingeben. Die AGB wurde ebenfalls angepasst.&lt;br /&gt;
&lt;br /&gt;
=== CBsoft, s.r.o. (ltd.) ===&lt;br /&gt;
*Homepage: http://www.jjtubes.eu/&lt;br /&gt;
* Firma in der Slowakei&lt;br /&gt;
* Verkauft Röhren der Firma JJ&lt;br /&gt;
* englischsprachig&lt;br /&gt;
* Zahlungsmöglichkeiten in € mit Paypal und Kreditkarte&lt;br /&gt;
&lt;br /&gt;
=== chiptrade.com ===&lt;br /&gt;
siehe [[#SE Spezial-Electronic AG|SE Spezial-Electronic AG]]&lt;br /&gt;
&lt;br /&gt;
=== ConeleK Electronic ===&lt;br /&gt;
Homepage: http://www.conelek.com&lt;br /&gt;
&lt;br /&gt;
* Sehr kleines Bauteileangebot (Röhren, Röhrensockel)&lt;br /&gt;
* Elektronik-Laborbedarf, insbesondere Nachfüllpackungen mit Steckbrett-Drahtbrücken&lt;br /&gt;
* Werkzeug für Elektronik&lt;br /&gt;
* Stromversorgungen&lt;br /&gt;
* Versand an Privat&lt;br /&gt;
* Versandkosten bis 25kg, Vorkasse 5,90€ (Stand 04/2008)&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: http://www.conrad.de und http://www.business.conrad.de&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;) (Anm.: Bauteile, die nur im Business-Katalog aufgeführt sind, sind in Ladengeschäften nur über Sonderbestellung zu bekommen, d.h. dort in aller Regel nicht vorrätig.)&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 bis zu 10% Rabatt für Schulen (bei genügend Umsatz)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, sechs in Österreich (Megastores)&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;
* Verfügbarkeit in Filialen kann Online überprüft werden.&lt;br /&gt;
* Verfügbarkeit in Filialen kann über zentale Rufnummer erfragt werden. Abholung bestellter Ware in Filialen möglich, aber trotzdem gleiche Versandkosten.&lt;br /&gt;
* Eigenmarken: u.a. Voltcraft, Renkforce&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Vorerst Auskommentiert - Subjektiv/Einzelerfahrung, veraltete Informationen (Filialen)&lt;br /&gt;
* Mit jeder Bestellung erhält man zusätzlich Werbung von unseriösen Firmen, wo Gewinne versprochen werden und man sich in Wirklichkeit für irgendwelche Abos verpflichtet. Wenn man bei Conrad anruft und sie zur Rede stellt, erhält man die Antwort, dass diese Werbung anscheinend aus Versehen hineingerutscht ist. So ein Zufall.&lt;br /&gt;
* sehr kulant bei Umtäuschen&lt;br /&gt;
* versuchen bei Rückgaben einen Teil oder den gesamten Betrag einzubehalten (schon mehrfach vorgekommen)&lt;br /&gt;
* Schlampig verpackte Artikel. ICs sind nicht Antistatik-Konform verpackt.&lt;br /&gt;
* Die Filiale München / Tal hat keine Telefonnummer mehr in den Verzeichnissen, anscheinend sind Kundenanfragen dort zu &amp;quot;lästig&amp;quot;. (Kommentar: andere Filialen auch nicht, wird nur noch über eine Sammelnummer über ein Callcenter abgewickelt. Die Ladenbestellung wird dann vom Callcenter per eMail an die Filiale weitergeleitet.)&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;
--&amp;gt;&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;
* schnelle Lieferung, sofern die Artikel auf Lager sind, versandkostenfreie Nachlieferung, &#039;&#039;&#039;teilweise sehr lange Lieferzeiten bei Ware die nicht ab Lager lieferbar ist&#039;&#039;&#039;. Bitte selbst abwägen ob dies für einen selbst akzeptabel ist. (Diskussion siehe hier [http://www.mikrocontroller.net/topic/273508] und hier [http://www.mikrocontroller.net/topic/249395].)&lt;br /&gt;
* ATMEL, ICs, Passive und Mechanische Bauteile, Platinen- und Lötzubehör, u.a.&lt;br /&gt;
* ca. 4000 Bauteile lagernd&lt;br /&gt;
* günstig&lt;br /&gt;
* Mengenrabatte für fast jedes Produkt&lt;br /&gt;
* Versand innerhalb Deutschlands: &lt;br /&gt;
* DHL: 3,85€ (ab 60 EUR versandkostenfrei)&lt;br /&gt;
* Versand EU-weit ab 5,95 EUR&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Bauelemente, die nicht im Shop angeboten werden, können auf Anfrage beschafft werden.&lt;br /&gt;
* Zahlung per Vorkasse (3% Skonto), PayPal, Nachnahme. 1 EUR Aufschlag bei PayPal-Zahlung&lt;br /&gt;
* Zahlung per Bankabbuchung, Kreditkarte oder Rechnung nur für Stammkunden (ab 4 bis 5 Bestellung), Für Institute/Firmen direkt auf Rechnung möglich&lt;br /&gt;
* Abholung von Ware in Bonn-Dransdorf nach Vereinbarung&lt;br /&gt;
&lt;br /&gt;
=== dad24 ===&lt;br /&gt;
Homepage, Shop: http://dad24.eu&lt;br /&gt;
E-Bay Shop:     http://stores.ebay.de/Shop-dad24&lt;br /&gt;
&lt;br /&gt;
* Unterschiedliche Preise in den beiden Shops&lt;br /&gt;
* Kleiner, nicht sonderlich schöner Onlineshop (dad24.eu)&lt;br /&gt;
* Kleines Angebot. Lupenleuchten, Lötstationen, Labornetzgeräte, Messgeräte, etc. aus dem unteren Preissegment&lt;br /&gt;
* Jede Woche eine neue &amp;quot;Kategorie der Woche&amp;quot; auf dad24.eu. Produkte aus der Kategorie werden erst im Warenkorb mit einem Rabatt angezeigt, der auch gewährt wird.&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;
* Versand innerhalb Deutschlands ab 4,50 EUR&lt;br /&gt;
* Hat auch eine gute Auswahl an CPLDs und einige FPGAs diverser Hersteller&lt;br /&gt;
&lt;br /&gt;
=== Daschke LTD ===&lt;br /&gt;
PDF-Katalog (Achtung, grosse Datei): http://www.daschke-ltd.de/Catalog/&lt;br /&gt;
&lt;br /&gt;
* Prompte Antwort und Hilfe via info ät obige adresse&lt;br /&gt;
* Bezahlung per Paypal und Rechnung möglich. Ist auch Ebay-Händler.&lt;br /&gt;
* sehr faire Preise für Bauteile und Versand&lt;br /&gt;
* Führt eine Vielzahl an unüblichen Steckern und Buchsen&lt;br /&gt;
* Nicht verfügbare Bauteile wurden proaktiv nachbestellt, trotz geringer Bestellmenge. Prima!&lt;br /&gt;
&lt;br /&gt;
=== DES - Der Elektroniker-Shop ===&lt;br /&gt;
Homepage: http://www.DerElektronikerShop.de&lt;br /&gt;
&lt;br /&gt;
Siehe auch den [http://www.mikrocontroller.net/topic/286786#3042475 Thread im Forum]&lt;br /&gt;
&lt;br /&gt;
* Bauteile&lt;br /&gt;
* Bauteilsätze der [http://www.DieElektronikerseite.de Elektronikerseite]&lt;br /&gt;
* Verkauf des BasicBeetle von [http://www.DieProjektseite.de der Projektseite]&lt;br /&gt;
* Ständig wachsendes Angebot&lt;br /&gt;
* Auch einige SMD-Bauteile verfügbar&lt;br /&gt;
* Kein Mindestbestellwert&lt;br /&gt;
* Versandkosten ab 3,80 EUR (Österreich/Europa ab 4,00 Eur)&lt;br /&gt;
* Versand auch nach Österreich (Europa auf Anfrage)&lt;br /&gt;
* Zahlung per Vorkasse&lt;br /&gt;
* Lieferzeit 1-3 Tage bei Verfügbarkeit&lt;br /&gt;
* PrePaid-Konto möglich&lt;br /&gt;
* Lieferungen auch an Privat&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: http://de.digikey.com&lt;br /&gt;
&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikbüro gibt es in den Niederlanden&lt;br /&gt;
* kostenloser Versand ab 65&amp;amp;#8364;, darunter 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* macht merkwürdige Plausibilitäts-Checks: wenn man privat über ihrem Dollar Limit (z.B. 400 Dollar bestellt) kommt sofort die Rückfrage nach Firmenname und Firmenadresse&lt;br /&gt;
* Rückfragen nach dem Verwendungszweck kommen ebenfalls schon bei der Bestellung bei bestimmten Bauteilen die der Exportkontrolle unterliegen&lt;br /&gt;
* Versand direkt aus den USA, dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* riesiges Angebot, gewissermaßen ein Distributor der auch Kleinmengen an Privatpersonen liefert, entscheidend ist, dass der Hersteller des Produkts geführt wird&lt;br /&gt;
* kein anderer Anbieter, bietet so viele verschiedene passive Bauteile in kleinen Stückzahlen, z.&amp;amp;nbsp;B. SMD Widerstände in Bauform 01005 bis 2512 meist in verschiedenen Toleranzklassen und von verschiedenen Herstellern&lt;br /&gt;
* alle Bauteile mit Herstellerangabe, Digikey kauft ausschließlich direkt vom Hersteller&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. 19%)&lt;br /&gt;
* Meistens deutlich teurer als Reichelt, doch häufig die beste Anlaufstelle für Privatkunden wenn es um Spezialbauteile geht, und der Hersteller sich im Programm von Digikey befindet&lt;br /&gt;
&lt;br /&gt;
=== Display Electronics ===&lt;br /&gt;
&lt;br /&gt;
Homepage: http://www.distel.co.uk&lt;br /&gt;
&lt;br /&gt;
* In England&lt;br /&gt;
* Webseite = Augenkrebs &lt;br /&gt;
* Online-Shop versteckt hinter dem Search-Button auf der Homepage&lt;br /&gt;
* Restposten aller Art&lt;br /&gt;
* Mindestbestellwert 10 GBP&lt;br /&gt;
&lt;br /&gt;
=== eHaJo ===&lt;br /&gt;
Homepage: http://www.eHaJo.de&lt;br /&gt;
&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Bauelemente (AVR, LCD, Kleinteile) und Bausätze sehr günstig&lt;br /&gt;
* eigenentwickelte Bausätze &lt;br /&gt;
* Lötübungen für SMD&lt;br /&gt;
* AVR-ISP-Stick&lt;br /&gt;
* Vorauskasse, Paypal, Sofortüberweisung, Rechnung ab 2. Bestellung&lt;br /&gt;
&lt;br /&gt;
=== EIBTron.com ===&lt;br /&gt;
Homepage: http://www.eibtron.com&lt;br /&gt;
&lt;br /&gt;
* Riesige Auswahl an Produkten (~300000)&lt;br /&gt;
* SMD-Bauteile bis 0402!&lt;br /&gt;
* auch spezielle Sachen wie Xilinx-Configuration PROMs, AD9740-DACs oder SMD-Quarze (z.B. Abracon ABM7) im Angebot&lt;br /&gt;
* Alternative zum HBE-Shop für Privatanwender!&lt;br /&gt;
* Versand direkt durch RS&lt;br /&gt;
* zuverlässiger und freundlicher Support&lt;br /&gt;
&lt;br /&gt;
=== Eisch-Kafka-Electronic ===&lt;br /&gt;
Homepage: http://www.eisch-electronic.de&lt;br /&gt;
 &lt;br /&gt;
* Hochfrequenz Bausätze und Bauteile für Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== EleConT ===&lt;br /&gt;
Homepage: http://www.elecont.de/shop/&lt;br /&gt;
&lt;br /&gt;
* Carrierboards für gebräuchliche AVR&lt;br /&gt;
&lt;br /&gt;
=== Electropuces ===&lt;br /&gt;
Homepage: http://perso.wanadoo.fr/electropuces/&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte aus Nantes, Frankreich  (teilweise engl. Menü)&lt;br /&gt;
&lt;br /&gt;
=== Electronic Search ===&lt;br /&gt;
&lt;br /&gt;
Homepage: http://www.electronic-search.de&lt;br /&gt;
&lt;br /&gt;
* Keine Mindestbestellmenge&lt;br /&gt;
* Verkauf auch an Privat/Bastler&lt;br /&gt;
* Fast alle Preise im Online-Shop nur &amp;quot;auf Anfrage&amp;quot;, und nicht im Shop angegeben.&lt;br /&gt;
&lt;br /&gt;
=== electronicpool Rheinstetten ===&lt;br /&gt;
Homepage: http://www.electronicpool.de&lt;br /&gt;
&lt;br /&gt;
* abgekündigte oder schwer beschaffbare elektronische Bauteile&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, keine Einzelbauteile&lt;br /&gt;
* entsprechende Literatur und Software&lt;br /&gt;
* &amp;quot;Kein Verkauf an Endverbraucher i.S.d. §13 BGB&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Elektronik-Kompendium ===&lt;br /&gt;
Homepage: http://www.elektronik-kompendium.de&lt;br /&gt;
&lt;br /&gt;
* Bausätze diverser Schaltungen (mit Anleitung und Funktionsbeschreibung)&lt;br /&gt;
* erspart lästiges Suchen in anderen Shops&lt;br /&gt;
* kurze Lieferzeiten&lt;br /&gt;
* günstiger Versand&lt;br /&gt;
&lt;br /&gt;
=== ElrePo ===&lt;br /&gt;
Homepage: http://www.elrepo.de&lt;br /&gt;
&lt;br /&gt;
*Relativ großes Sortiment an Bauteilen&lt;br /&gt;
*Günstige Sortimente und Recycling Bauteile&lt;br /&gt;
*Versandkosten ab 90ct !&lt;br /&gt;
&lt;br /&gt;
=== Elk Tronic ===&lt;br /&gt;
Homepage: http://www.elk-tronic.de&lt;br /&gt;
&lt;br /&gt;
* kleines Lieferprogramm Adapterplatinen (SMD -&amp;gt; 2,54mm-Raster) und Programmieradapter&lt;br /&gt;
* günstige Preise und Versandspesen&lt;br /&gt;
&lt;br /&gt;
=== Elko-Verkauf ===&lt;br /&gt;
Homepage: http://www.elko-verkauf.de&lt;br /&gt;
&lt;br /&gt;
* Nur Low-ESR-Elkos&lt;br /&gt;
* Elko-Sets für ein Gerät&lt;br /&gt;
&lt;br /&gt;
=== Ellmitron ===&lt;br /&gt;
Homepage: http://www.ellmitron.de/&lt;br /&gt;
Katalog: http://www.ellmitron.de/katalog.pdf&lt;br /&gt;
&lt;br /&gt;
Lehrmittel, Kleinbausätze vor allem für Schüler, Experimentierkästen&lt;br /&gt;
&lt;br /&gt;
=== Elpro ===&lt;br /&gt;
Homepage: http://www.elpro.org/shop/shop.php&lt;br /&gt;
&lt;br /&gt;
* Sehr gute Preise, nachsehen lohnt sich!&lt;br /&gt;
* Kein Mindestbestellwert, aber höhere Versandkosten für kleine Bestellungen. (Stand April 2013):&lt;br /&gt;
* Ab €200: Versandkostenfrei&lt;br /&gt;
* Große Auswahl an Mikrocontrollern, z.B. [[STM32]] und [[LPC1xxx]]&lt;br /&gt;
* Sehr große Auswahl an Schaltnetzteilen von Meanwell (geschlossen, offen, auf PCB lötbar, DIN-Schiene)&lt;br /&gt;
* Shopsoftware gewöhnungsbedürftig, jedoch sinnvolle Untergliederung. Braucht JavaScript&lt;br /&gt;
* Keine AGBs online. Da Preisangaben ohne MwSt. richtet sich das Angebot vermutlich nicht an Endverbraucher (werden aber beliefert)&lt;br /&gt;
* Sehr schnelle Lieferung, Bearbeitungszeit (bis Warenausgang) oft nur 2-3 Tage.&lt;br /&gt;
* Versand bisher mit DHL&lt;br /&gt;
* gute bis sehr gute Verpackung&lt;br /&gt;
&lt;br /&gt;
=== Eltrix ===&lt;br /&gt;
Homepage: http://eltrix.de/Starteltrix.htm&lt;br /&gt;
&lt;br /&gt;
*  Verbrauchsmaterial, Tipps und Tricks fürs Leiterplattenherstellen und Löten&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: http://www.elv.de&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;
* im Allgemeinen 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;
* Versandkosten innerhalb Deutschland 4,5&amp;amp;#8364;, ab 150&amp;amp;#8364; Bestellwert versandkostenfrei&lt;br /&gt;
* nicht abwählbare Versandversicherung, die 0,85% des Bestellwertes kostet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Erklärte am 31. August 2010 &amp;quot;... den Betrieb bis auf weiteres zu schließen.&amp;quot; &lt;br /&gt;
=== Embedit Mikrocontrollertechnik ===&lt;br /&gt;
Online Shop: http://shop.embedit.de&lt;br /&gt;
&lt;br /&gt;
* Gute Auswahl an AVR Controllern, aber nur aktuelle Typen, keine AT90Sxxxx. Teilweise exotische Typen wie MLF Gehäuse&lt;br /&gt;
* Atmel und Philips SmartARM Controller&lt;br /&gt;
* Module und Boards mit AVR Controllern&lt;br /&gt;
* Zubehör von Atmel wie STK500 oder AVRISP mkII&lt;br /&gt;
* Diverse aktive und passive Elektronikteile, ständig neue Teile&lt;br /&gt;
* Mechanikteile wie Zahnräder, Steckverbinder usw.&lt;br /&gt;
* Lieferzeit 1-4 Tage, je nachdem wie man zahlt (hab aber auch schon ne Vorauskasse innerhalb eines Tages per Expressbrief bekommen, zuvorkommender Service)&lt;br /&gt;
* Versandkosten ab 3,95 &amp;amp;#8364;, versicherter Versand, Vorauskasse und Nachnahme&lt;br /&gt;
* Keine Versandkosten ab 50 &amp;amp;#8364; Warenwert innerhalb Deutschlands, bei Zahlung per Vorauskasse und Lieferung per Hermes&lt;br /&gt;
* Lieferung in viele EU-Länder&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ETT - Electronic Toys Trading  ===&lt;br /&gt;
Homepage: http://www.ett-online.de&lt;br /&gt;
&lt;br /&gt;
* Großhandel nur für Gewerbekunden.&lt;br /&gt;
* Zweitshop [[Elektronikversender#Atzert-Elektronik_Versand|Atzert-Elektronik Versand]] (früher EFB-Electronic Versand, davor Megakick Electronic-Stores) für Endkunden.&lt;br /&gt;
* Ladengeschäft in Braunschweig für jedermann. Weitere Atzert Ladengeschäfte in Bielefeld, Bremen, Hamburg und Berlin.&lt;br /&gt;
* Eigentümer der Marken McCHECK®, McPower®, McVoice® und anderer, unter denen ETT importierte Messgeräte, Labornetzteile, usw. an Großkunden und Händler vertreibt. Diese sind unter oben genannten Marken dann in vielen Shops anderer Firmen für Endkunden zu finden, nicht nur bei Atzert. Preisvergleiche lohnen.&lt;br /&gt;
&lt;br /&gt;
=== Ettinger GmbH ===&lt;br /&gt;
Homepage: http://www.ettinger.de&lt;br /&gt;
&lt;br /&gt;
* Für gewerbliche Kunden&lt;br /&gt;
* Mechanische Komponenten (Gehäuse, Abstandshalter, Drehknöpfe, usw.)&lt;br /&gt;
* LEDs&lt;br /&gt;
* Gewöhnungsbedürftiger Online-Shop&lt;br /&gt;
&lt;br /&gt;
=== Eurotronik GmbH ===&lt;br /&gt;
Homepage: http://www.eurotronik.com&lt;br /&gt;
&lt;br /&gt;
* Für gewerbliche Kunden&lt;br /&gt;
* Mindestbestellwert 100.00 Euro&lt;br /&gt;
* Individuelle Suche für alle möglichen Bauelemente&lt;br /&gt;
* Abgekündigte und allokierte BE finden&lt;br /&gt;
* Besonders Stark mit Altera, Microchip, Texas Instruments&lt;br /&gt;
&lt;br /&gt;
=== EVE ===&lt;br /&gt;
Homepage: http://www.eve.de&lt;br /&gt;
&lt;br /&gt;
* Zitat aus den AGBs:&lt;br /&gt;
::&#039;&#039;&amp;quot;Zu Bestellungen im Rahmen des Online-Handels sind nur durch uns autorisierte, d. h. zugelassene Käufer berechtigt. Wir gewähren nach erfolgreicher Zertifizierung – ohne hierzu verpflichtet zu sein – dem jeweiligen Käufer das nicht übertragbare, nicht exklusive Recht im Rahmen des Online-Handels Bestellungen uns gegenüber “auszubringen”.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Dies darf man wohl getrost als Hinweis ansehen, dass Endverbraucher als Kunden nicht gewünscht sind.&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;
=== EXP-TECH ===&lt;br /&gt;
Homepage: http://www.exp-tech.de/&lt;br /&gt;
* liefert an privat&lt;br /&gt;
* vielfältiges Sortiment von vielen verschiedenen Händlern (Adafruit, Sparkfun, Arduino, Olimex, Embest, SeedStudio, CooCox,  Digi, BeagleBone, IteadStudio, RaspberryPI, SecretLabs, CookingHacks,  Axiris.pe, OpenPicus, RobotElectronics, RobotBase, AttenInstruments,  Dagu, RF-Explorer, TexasInstruments, DangerousPrototypes...)&lt;br /&gt;
* Lieferung per DHL&lt;br /&gt;
* Zahlungsmöglichkeiten: Überweisung (Vorkasse), PayPal, Visa, MasterCard&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
Homepage: http://de.farnell.com&lt;br /&gt;
&lt;br /&gt;
* liefert nur an gewerbliche Abnehmer, Ausnahme sind Studenten und HTL-Schüler (Österreich, Farnell.at). Nachweis wird verlangt (Gewerbeschein oder Immatrikulation).&lt;br /&gt;
* Lieferungen an Privat:&lt;br /&gt;
:* Schweiz: Farnell Schweiz beliefert auch Privatkunden.&lt;br /&gt;
:* Deutschland: Über den Reseller [[#HBE_-_Heinz_B.C3.BCchner_Elektronik.2C_Messtechnik.2C_med._Elektronik_e.K.|HBE]] kann man Produkte aus dem Farnell-Sortiment zu bestellen.&lt;br /&gt;
:* Österreich: [[#Technik-Welt / Industrieshop.at|Technik-Welt / Industrieshop.at]]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* &amp;lt;s&amp;gt;12% Rabatt für Studenten und Lehreinrichtungen&amp;lt;/s&amp;gt; Laut Kundenservice seit Dezember 2013 keine Rabatte mehr für bestimmte Kundengruppen!&lt;br /&gt;
* sehr schneller Versand, Ware ist in 99% aller Fälle am nächsten Tag da (UPS), fehlende Positionen werden relativ rasch versandkostenfrei nachgeliefert&lt;br /&gt;
* Versandkosten: Bestellung bis 49,99&amp;amp;#8364;: 7,95&amp;amp;#8364;;   50,- bis 149,99&amp;amp;#8364;: 5,95&amp;amp;#8364;;   ab EUR 150,- versandkostenfrei&lt;br /&gt;
* hat nach eigenen Aussagen umfangreichstes Sortiment an RoHS-konformen Bauteilen mit Suchfunktion im WWW&lt;br /&gt;
* leistungsfähige parametrische Suchfunktion / teils aber völlig nutzlos, da den Artikeln massenweise Tags fehlen, weswegen die Suchergebnisse unnötig eingeschränkt werden&lt;br /&gt;
* Datenblätter für die meisten Bauteile online&lt;br /&gt;
* Internetpräsenz fällt nachts oft aus (Hinweis auf angebliche geplante Wartungsarbeiten)&lt;br /&gt;
* Sortierfunktion wird bei der Suche ständig zurückgesetzt, im Warenkorb ist überhaupt keine sinnvolle Sortierung möglich&lt;br /&gt;
* Eigenwillige Preispolitik: Einiges sehr günstig, Anderes total überteuert&lt;br /&gt;
&lt;br /&gt;
=== Fibra-Brandt Zweibrücken ===&lt;br /&gt;
Homepage: http://www.fibra-brandt.com&lt;br /&gt;
&lt;br /&gt;
* lagert tausende veraltete und schwer zu findende elektronische Bauteile&lt;br /&gt;
* Halbleiter, IC&#039;s, Transistoren, Spulen und Kondensatoren.&lt;br /&gt;
* Sonderbeschaffung von abgekündigten Halbleitern.&lt;br /&gt;
&lt;br /&gt;
=== Fischer DK2FD ===&lt;br /&gt;
Homepage: http://www.dfe-online.de für das Ingenieurbüro,&lt;br /&gt;
Homepage: http://www.dk2fd.de für Amateurfunkprodukte&lt;br /&gt;
&lt;br /&gt;
* Baugruppen für Hochfrequenzmesstechnik und Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Fuchs Shop ===&lt;br /&gt;
Homepage: http://www.fuchs-shop.com/&lt;br /&gt;
&lt;br /&gt;
* 1-Wire- und iButton-Komponenten&lt;br /&gt;
&lt;br /&gt;
=== Funkamateur Online-Shop ===&lt;br /&gt;
&lt;br /&gt;
Siehe [[Elektronikversender#Box73]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futurelec ===&lt;br /&gt;
Homepage: http://www.futurlec.com&lt;br /&gt;
&lt;br /&gt;
* günstiger Versender aus Übersee&lt;br /&gt;
* viele Stamp-Boards&lt;br /&gt;
* LED Matrix-Module&lt;br /&gt;
&lt;br /&gt;
=== Future Electronics ===&lt;br /&gt;
Homepage: http://de.futureelectronics.com&lt;br /&gt;
&lt;br /&gt;
* große Auswahl an Teilen&lt;br /&gt;
* Versand auch an Privatpersonen&lt;br /&gt;
* Preisangaben ohne MwSt.&lt;br /&gt;
* Zahlung nur mit Kreditkarte&lt;br /&gt;
* Versandkosten 7,14€ (Brutto)&lt;br /&gt;
* Versand aus den USA mit FedEx, Lieferzeit meist unter 5AT&lt;br /&gt;
* Verzollung usw. wird von FutureElectronics gemacht, keine Nachzahlungen etc.&lt;br /&gt;
&lt;br /&gt;
=== Geist Electronic-Versand GmbH ===&lt;br /&gt;
Homepage: http://www.geist-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
* D-78054 Villingen-Schwenningen&lt;br /&gt;
* Versandkosten: 5.40€&lt;br /&gt;
&lt;br /&gt;
=== Giga-Tech ===&lt;br /&gt;
Homepage: http://www.giga-tech.de&lt;br /&gt;
&lt;br /&gt;
* Spezialitäten für Hochfrequenz / Amateurfunk&lt;br /&gt;
* Scheinbar nur noch Abverkauf, da viele Artikel nicht mehr lieferbar&lt;br /&gt;
* Antworten auf Anfragen und Lieferungen dauern sehr lange&lt;br /&gt;
* 68542 Heddesheim&lt;br /&gt;
&lt;br /&gt;
=== Grummes Elektronik ===&lt;br /&gt;
Homepage: http://www.grummes.de&lt;br /&gt;
&lt;br /&gt;
* Elektronikversender /CNC-Fräsmaschinen / Schrittmotorsteuerungen / Bauteile&lt;br /&gt;
* Homepage nicht aufrufbar (10.12.2011)&lt;br /&gt;
&lt;br /&gt;
=== Glyn (GLYNshop) ===&lt;br /&gt;
Homepage: https://www.glynshop.com/erp/welcome.do&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;B2B Shop&amp;quot; = nicht für Privatkunden&lt;br /&gt;
* Microcontroller, Evaluation Boards, TFT-Displays, LC-Displays, Memory Cards u.a.&lt;br /&gt;
&lt;br /&gt;
=== guloshop.de ===&lt;br /&gt;
Homepage: http://guloshop.de&lt;br /&gt;
&lt;br /&gt;
* kleiner Shop, konzentriert sich auf Standard-AVRs im DIP-Gehäuse, ist dabei aber meist der billigste Versender in Deutschland&lt;br /&gt;
* ATtiny, ATmega, Breakout-Boards, Programmer, Adapterkabel, IC-Fassungen&lt;br /&gt;
* AVR mit geflashtem Arduino-Bootloader&lt;br /&gt;
* äußerst niedrige Preise&lt;br /&gt;
* liefert schnell und zuverlässig, jedoch nur gegen Vorkasse&lt;br /&gt;
* kein Mindestbestellwert, Versandkosten für kleine Bestellungen: 2,40 EUR, darüber 4,40 EUR&lt;br /&gt;
* ansässig in 90489 Nürnberg&lt;br /&gt;
&lt;br /&gt;
=== H-Tronic ===&lt;br /&gt;
Homepage: http://www.h-tronic.eu/index.php&lt;br /&gt;
&lt;br /&gt;
* Online-Shop einer Entwicklungsfirma, in dem neben Baugruppen und Geräten auch einige Bauelemente und Elektronikzubehör angeboten werden&lt;br /&gt;
* kleines Angebot&lt;br /&gt;
&lt;br /&gt;
=== Hallmanns Elektronik ===&lt;br /&gt;
Homepage: http://www.hallmanns.com &amp;lt;br&amp;gt;&lt;br /&gt;
Adresse: Bruno Hallmanns, Weierstraße 41, 52349 Düren&lt;br /&gt;
&lt;br /&gt;
* Elektronikhändler mit Ladenlokal und Versand&lt;br /&gt;
* Ladentypisches Sortiment (Bauteile, Geräte, PC, Funk, Hifi...)&lt;br /&gt;
&lt;br /&gt;
=== Hari Seligenstadt ===&lt;br /&gt;
Homepage: http://www.hari-ham.com&lt;br /&gt;
&lt;br /&gt;
* Bausätze, Ringkerne, Geräte für Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== HBE - Heinz Büchner Elektronik, Messtechnik, med. Elektronik e.K. ===&lt;br /&gt;
Homepage: http://www.hbe-shop.de/katalog/&lt;br /&gt;
&lt;br /&gt;
* Bezeichnet sich als &#039;&#039;[[#Farnell|Farnell]] Fachhändler&#039;&#039;, bei dem nichtgewerbliche Kunden aus dem Farnell-Sortiment bestellen können.&lt;br /&gt;
* Preise für Farnell-Produkte normalerweise Farnell Netto-Preis + MwSt.&lt;br /&gt;
* Mindestbestellwert 25,- € (netto), Mindermengenzuschlag 5,- € (Stand 06/2010)&lt;br /&gt;
* Versandkosten 4,75 € (netto), ab 75,- € (netto) versandkostenfrei (Stand 06/2010)&lt;br /&gt;
&lt;br /&gt;
=== Heho-Elektronik ===&lt;br /&gt;
Homepage: http://www.heho-elektronik.de&lt;br /&gt;
* Halbleiter / Bauteile, Sortimente, Handy - Akkus, VELLEMAN - Bausätze&lt;br /&gt;
* Aktuelles Angebot, Ladegeräte / Akkuladegeräte, Blei - Akkus&lt;br /&gt;
* Spannungswandler, Audio / Video / USB - Kabel, Netzwerk - Kabel&lt;br /&gt;
* 1-2 Arbeitstage für Waren ab Lager&lt;br /&gt;
* Porto + Verpackung pauschal Euro 4,50&lt;br /&gt;
* Mindestbestellwert von &amp;amp;#8364; 10,00&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Von der Webseite &amp;quot;Unser Angebot richtet sich an Schulen, Behörden, Handel, Handwerk und Industrie.&amp;quot;&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
* Mindestbestellwert von 20&amp;amp;#8364;&lt;br /&gt;
* Standardversand innerhalb Deutschlands 5,80&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== HN Electronic Components GmbH &amp;amp; Co. KG / Netzteilshop ===&lt;br /&gt;
Homepage gewerbliche Kunden: http://www.hn-electronic.de/&lt;br /&gt;
* Netzteile aller Art&lt;br /&gt;
* Es gibt keinen Onlineshop mehr, wahrscheinlich werden Endkunden nicht beliefert&lt;br /&gt;
** Homepage Endkunden: http://www.netzteilshop.com/hnshop.html&lt;br /&gt;
** Lieferung an Endkunden nur per UPS Nachnahme.&lt;br /&gt;
** Mindestbestellmenge für Endkunden 25 €&lt;br /&gt;
&lt;br /&gt;
=== Home-Electronic24 ===&lt;br /&gt;
Homepage: http://www.home-electronic24.de/&lt;br /&gt;
&lt;br /&gt;
=== HW-Electronics ===&lt;br /&gt;
Homepage: http://www.hw-electronics.de &amp;lt;br&amp;gt;&lt;br /&gt;
Homepage EU: http://hw-electronics.eu/&lt;br /&gt;
&lt;br /&gt;
* Tauch- und Sprühätzanlagen&lt;br /&gt;
* Entwicklungsgeräte&lt;br /&gt;
* Belichtungsgeräte, Materialsätze zum Selbstbau von Belichtungsgeräten&lt;br /&gt;
&lt;br /&gt;
=== ic-box24.de ===&lt;br /&gt;
Homepage: http://www.ic-box24.de&lt;br /&gt;
&lt;br /&gt;
* NOS Bauelemente (ab Lager)&lt;br /&gt;
* kein Mindestauftragswert&lt;br /&gt;
* 3,00€ Versandkosten&lt;br /&gt;
* liefert auf Rechnung oder Paypal, MWSt. wird ausgewiesen&lt;br /&gt;
&lt;br /&gt;
=== ID-Elektronik ===&lt;br /&gt;
Homepage: http://www.id-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Amateurfunk-Baugruppen&lt;br /&gt;
&lt;br /&gt;
=== IT-WNS ===&lt;br /&gt;
Homepage: https://www.it-wns.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Bauteile, Platinen, Bausätze&amp;quot; insbesondere mit ATMEGA Mikrocontrollern&lt;br /&gt;
* Bausätze zu Projekten aus dem Forum&lt;br /&gt;
* SD-Slots, RFID, Bluetooth-Module, AVR Mikrocontroller, USB uvam.&lt;br /&gt;
* Bauelemente, die nicht im Shop angeboten werden, können auf Anfrage (Kontaktformular) oft beschafft werden &lt;br /&gt;
* Günstige Preise und Versandkosten ab 2,45EUR, kein Mindestbestellwert&lt;br /&gt;
* Schneller Versand, sofern die Artikel auf Lager sind, versandkostenfreie Nachlieferung&lt;br /&gt;
&lt;br /&gt;
=== Kabelscheune ===&lt;br /&gt;
Homepage: http://www.kabelscheune.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Direktversand von Elektromaterial und Multimediaprodukten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kelemen ===&lt;br /&gt;
Homepage: http://www.kelemenantennen.de/Kelemen-Shop/&lt;br /&gt;
&lt;br /&gt;
* Messgeräte, Antennen und Zubehör für den Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: http://www.kessler-electronic.de&lt;br /&gt;
&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment kleiner als Reichelt und mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
* oft lange Lieferzeiten&lt;br /&gt;
* Versandkosten innerhalb Deutschlands 4€ (Brief), 5€ (DHL-Paket), 10€ (DHL-Express-Paket)&lt;br /&gt;
&lt;br /&gt;
=== Klein-Electronic ===&lt;br /&gt;
Homepage: http://www.klein-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen zur Video- und 2,4GHz-Sendetechnik&lt;br /&gt;
&lt;br /&gt;
=== Konni-Antennen ===&lt;br /&gt;
Homepage: http://www.konni-antennen.de&lt;br /&gt;
&lt;br /&gt;
* Antennen für TV, Amateurfunk&lt;br /&gt;
* Zubehör, Einzelteile&lt;br /&gt;
* sehr netter kompetenter Service&lt;br /&gt;
&lt;br /&gt;
=== Köditz Nachrichtentechnik ===&lt;br /&gt;
Homepage: http://www.koeditz-nachrichtentechnik.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen und Bauteile für Amateurfunk und TV-Satellitenempfang&lt;br /&gt;
&lt;br /&gt;
=== Kuhne DB6NT ===&lt;br /&gt;
Homepage: http://www.kuhne-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen und Bausätze für Mikrowellenamateure&lt;br /&gt;
&lt;br /&gt;
=== LEDSEE Electronics ===&lt;br /&gt;
Homepage: http://www.ledsee.com&lt;br /&gt;
&lt;br /&gt;
* LEDs, LCDs, diverses&lt;br /&gt;
* Lieferung direkt aus China, daher sehr günstig und lange Lieferzeiten&lt;br /&gt;
&lt;br /&gt;
=== LED Microtechnics LTD ===&lt;br /&gt;
Homepage: http://www.ledmeile.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;LED Shop und Lampentechnik&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== LED-Tech LED-Shop ===&lt;br /&gt;
Homepage: http://www.led-tech.de&lt;br /&gt;
&lt;br /&gt;
* viele verschiedene LEDs zu sehr guten (meist den günstigsten) Preisen&lt;br /&gt;
* vor allem auf High-Power-LEDs spezialisiert&lt;br /&gt;
* viele verschiedene Treiber für High-Power-LEDs&lt;br /&gt;
* kostenloser Versand&lt;br /&gt;
* haben ein eigenes, sehr umfangreiches Forum&lt;br /&gt;
&lt;br /&gt;
=== Lieske Elektronik ===&lt;br /&gt;
Homepage: http://www.lieske-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Aktuell: Nach Inventur mehrere hundert Artikel um bis zu 50% reduziert (Stand: 01/2014)&lt;br /&gt;
* Sehr breite Produktpalette mit mehr als 500.000 Artikeln (IT-Sektor, Sicherheitstechnik, Unterhaltungselektronik, Elektrotechnik, Industrieelektronik, Telekommunikation, etc.)&lt;br /&gt;
* Eigener [http://blog.lieske-elektronik.de/ Firmenblog]&lt;br /&gt;
* weltweiter Versand&lt;br /&gt;
* liefert nur an Geschäftskunden&lt;br /&gt;
&lt;br /&gt;
=== Lüdeke Elektronic ===&lt;br /&gt;
Homepage: http://www.luedeke-elektronic.de/&lt;br /&gt;
&lt;br /&gt;
* großes Sortiment, bietet unter anderem auch viele selbst entwickelte Bausätze an&lt;br /&gt;
&lt;br /&gt;
=== LUMITRONIX LEDs-Shop ===&lt;br /&gt;
Homepage: http://www.leds.de&lt;br /&gt;
&lt;br /&gt;
* alles rund um LEDs (auch Zubehör und Lektüre)&lt;br /&gt;
* neben Standard-LEDs auch SMD- und SuperFlux-LEDs&lt;br /&gt;
&lt;br /&gt;
=== Marsch Elektronik, M. Schlimper ===&lt;br /&gt;
Homepage: http://www.marsch-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Online Shop für aktive und passive Bauelemente&lt;br /&gt;
* Versandkosten ab Euro 1,60&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* bietet auch Einsteigersortimente und Widerstandsortimente (auch SMD)&lt;br /&gt;
* liefert nur innerhalb Deutschlands&lt;br /&gt;
* nicht gelistete Artikel können angefragt werden und werden meist auch beschafft&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauritz Communication &amp;amp; Electronics ===&lt;br /&gt;
Homepage: http://www.mauritz-shop.eu&lt;br /&gt;
&lt;br /&gt;
* Online Shop für HF-Stecker und Kabel&lt;br /&gt;
* bietet HF-Stecker/Buchsen und Koaxkabel an&lt;br /&gt;
* große Auswahl, auch exotische Teile&lt;br /&gt;
* Kabelkonfektionierung nach Wunsch&lt;br /&gt;
* vernünftige Preise&lt;br /&gt;
* liefert nach Rücksprache auch weltweit&lt;br /&gt;
* Keine Mindestbestellwert, aber 5 € Aufschlag unter 15 €&lt;br /&gt;
* Versand bis 40 kg pauschal 5,95 € per GLS innerhalb DE&lt;br /&gt;
* schneller Versand&lt;br /&gt;
* Paypal oder Vorkasse&lt;br /&gt;
&lt;br /&gt;
=== mechapro ===&lt;br /&gt;
Homepage: http://www.mechapro.de&lt;br /&gt;
* Online Shop für Schrittmotoren und Steuerungen&lt;br /&gt;
* Schrittmotorendstufen als Fertiggeräte oder Bausätze&lt;br /&gt;
* Eigene Entwicklung und Fertigung in Deutschland (außer Motoren)&lt;br /&gt;
* Versandkosten in DE ab 4 EUR&lt;br /&gt;
* liefert EU-weit&lt;br /&gt;
&lt;br /&gt;
=== Mein-Daarle ===&lt;br /&gt;
Homepage: http://www.mein-st-arnual.de/shop/saarbruecken/artikellisteL.html&lt;br /&gt;
&lt;br /&gt;
* Teileliste eines &amp;quot;Händlers aus Saarbrücken&amp;quot; (wahrscheinl.: Frank Skowronek ESS Elektronik Service), &amp;quot;bis sein Onlineshop ans Netz gehen kann&amp;quot;&lt;br /&gt;
* derzeit (4/2011) kein Onlineshop, Kontakt über Formular&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;
* kein Mindestbestellwert&lt;br /&gt;
* 22.7.2012: Totalausverkauf wegen Geschäftsaufgabe, 10% auf alle Artikel&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller-Starterkits ===&lt;br /&gt;
Homepage: http://www.microcontroller-starterkits.de&lt;br /&gt;
&lt;br /&gt;
* 22.7.2012: Seite nicht erreichbar&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;
* Abholung in Hattingen möglich&lt;br /&gt;
* Versandkosten innerhalb Deutschlands ab 2,50&amp;amp;#8364;&lt;br /&gt;
* keine Kreditkartenzahlung möglich&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller.net ===&lt;br /&gt;
Homepage: http://shop.mikrocontroller.net&lt;br /&gt;
&lt;br /&gt;
* Starterkits, Development Boards und Zubehör für AVR, AVR32, ARM und MSP430&lt;br /&gt;
&lt;br /&gt;
=== Mira Nürnberg ===&lt;br /&gt;
Homepage: http://www.mira-electronic.de&lt;br /&gt;
&lt;br /&gt;
* SMD-Bauteile, SMD-Sortimentboxen&lt;br /&gt;
* Verkauf und Preisangaben nur für Gewerbetreibende&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 22.7.2012 Seite nicht erreichbar, Domain bei einem Domaingrabber&lt;br /&gt;
=== Karl Müller EME Messtechnik ===&lt;br /&gt;
Homepage: http://www.eme-hf-technik.de&lt;br /&gt;
&lt;br /&gt;
* Hochfrequenz-Messtechnik, HF-Komponenten&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mouser ===&lt;br /&gt;
Homepage: http://de.mouser.com&lt;br /&gt;
&lt;br /&gt;
* Liefert an Privat&lt;br /&gt;
* Zügige Lieferung mit FedEx aus den USA&lt;br /&gt;
* Keine Halbleiter von Linear, National und Analog&lt;br /&gt;
* &amp;quot;Versand ist kostenfrei bei den meisten Bestellungen über 65 €&amp;quot;&lt;br /&gt;
* Preise inkl. Zoll aber ohne Einfuhrumsatzsteuer (Einfuhr laut Berichten über Frankreich, also +19,6%)&lt;br /&gt;
&lt;br /&gt;
=== MS-Elektronik ===&lt;br /&gt;
Homepage: http://www.ms-elektronik.info&lt;br /&gt;
&lt;br /&gt;
* Liefert an Privat&lt;br /&gt;
* Zügige Lieferung&lt;br /&gt;
* Gute Qualität&lt;br /&gt;
* Viel in Richtung Audio&lt;br /&gt;
* Große Auswahl an Elkos -&amp;gt; kleine Preise&lt;br /&gt;
* kein allzu großes Sortiment&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: http://www.muetronshop.de&lt;br /&gt;
&lt;br /&gt;
* Keine Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== myAVR Shop ===&lt;br /&gt;
Hompage http://shop.myavr.de&lt;br /&gt;
&lt;br /&gt;
* Kleine Auswahl, aber die angebotene Ware ist sehr preiswert (meist preiswerter als bei Reichelt)&lt;br /&gt;
* Zügige Lieferung (1-2 Werktage)&lt;br /&gt;
* Diverse Zahlungsmöglichkeiten: Rechnung, Vorkasse, Lastschrift, Kreditkarte, PayPal&lt;br /&gt;
* Kein Mindestbestellwert&lt;br /&gt;
* Sehr günstige Versandkosten ab 1,95 Eur&lt;br /&gt;
* Mengenrabatt ab 10 gleichen Artikeln&lt;br /&gt;
&lt;br /&gt;
=== Neuhold-Elektronik ===&lt;br /&gt;
Homepage: http://www.neuhold-elektronik.at &amp;lt;br&amp;gt;&lt;br /&gt;
Shop: http://www.neuhold-elektronik.at/catshop/default.php?language=de&lt;br /&gt;
&lt;br /&gt;
* preiswerte Schnäppchen&lt;br /&gt;
* regelmäßig aktualisierte Angebotsliste herunterladbar&lt;br /&gt;
* Ab 60,- EUR versandkostenfrei in Österreich&lt;br /&gt;
&lt;br /&gt;
=== Octamex ===&lt;br /&gt;
Homepage: http://www.octamex.de&lt;br /&gt;
&lt;br /&gt;
* Leiterplattenchemie (Entwickler, Ätzmittel, CRC-Sprays)&lt;br /&gt;
* Chemisch Zinn&lt;br /&gt;
* Lötstopp-Laminat, Tentingresist, Bestückungsdruck&lt;br /&gt;
* Bungard Basismaterial in 0,5mm 1,0mm 1,5mm Dicke und 18µm, 35µm, 70µm Kupfer&lt;br /&gt;
* Bungard Alucorex für 19&amp;quot; Frontplatten&lt;br /&gt;
* Bungard Cotherm, Alukernbasismaterial&lt;br /&gt;
* Funkmodule 434MHz, 868MHz, 2.4GHz&lt;br /&gt;
* Löttechnik und Zubehör&lt;br /&gt;
* Gehäuse aller Art&lt;br /&gt;
* Messgeräte und Labornetzteile&lt;br /&gt;
* aktive, passive u. mechanische Bauelemente (Widerstände, Kondensatoren, Transistoren, Logik-ICs etc.)&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Lieferung auch ins Ausland&lt;br /&gt;
* Versandkosten ab 4,50EUR&lt;br /&gt;
* Liefert nur gegen Vorkasse, ausser für Bestandskunden, die schon häufig bestellt haben&lt;br /&gt;
* Zahlung mit EC-Pay oder Kreditkarte nur gegen Aufschlag (bis zu 5%)&lt;br /&gt;
&lt;br /&gt;
=== Online Batterien ===&lt;br /&gt;
Homepage: http://www.online-batterien.de&lt;br /&gt;
&lt;br /&gt;
* Allerlei günstige Batterien &amp;amp; Akkus vieler Marken&lt;br /&gt;
* z.&amp;amp;nbsp;B. &#039;&#039;&#039;40 Stk.&#039;&#039;&#039; DURACELL PLUS LR6 AA 11,59€ (Jan 2010)&lt;br /&gt;
* Beleuchtungsartikel&lt;br /&gt;
* USV&lt;br /&gt;
* Versand ab 3,90€&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;
=== PCB-Soldering ===&lt;br /&gt;
&lt;br /&gt;
Homepage, Online-Shop: http://www.pcb-soldering.co.uk&lt;br /&gt;
eBay: http://www.allendale-stores.co.uk&lt;br /&gt;
Firmen-Homepage: http://www.allendale-elec.co.uk&lt;br /&gt;
&lt;br /&gt;
* [http://www.aoyue.com/en/products.asp Aoyue] Lötstationen und preiswertes Zubehör (Lötspitzen) für diese. Bei Aoyue-Zubehör bessere Preise (Stand 10/2008) als [[#WilTec_Wildanger_Technik_GmbH|WilTec]]&lt;br /&gt;
* Schnelle Lieferung&lt;br /&gt;
* Dank [http://www.zoll.de/b0_zoll_und_steuern/a0_zoelle/a1_grundlage_zollrecht/b0_zollgebiet/index.html EU Binnenmarkt] nur britische Mehrwertsteuer (VAT), kein Zoll, keine [http://www.zoll.de/b0_zoll_und_steuern/a3_einfuhrumsatzsteuer/index.html Einfuhrumsatzsteuer] fällig.&lt;br /&gt;
* Zwei von drei E-Mails wurden nicht beantwortet&lt;br /&gt;
* Versandart wurde eigenmächtig von &amp;quot;Standard&amp;quot; auf teureres &amp;quot;Signed for&amp;quot; (Einschreiben) geändert&lt;br /&gt;
&lt;br /&gt;
=== Pollin Electronic ===&lt;br /&gt;
Homepage: http://www.pollin.de&lt;br /&gt;
&lt;br /&gt;
* Günstige Restposten aller Art (z.&amp;amp;nbsp;B. &amp;quot;250 g verschiedene ICs&amp;quot; u.dgl.)&lt;br /&gt;
* Produktkategorien:&lt;br /&gt;
** Computer und Zubehör&lt;br /&gt;
** Telefone und Zubehör&lt;br /&gt;
** Antennentechnik&lt;br /&gt;
** HiFi/Car-HiFi/Video/TV&lt;br /&gt;
** Stromversorgung&lt;br /&gt;
** Lichttechnik&lt;br /&gt;
** Messtechnik / Uhren&lt;br /&gt;
** Haustechnik&lt;br /&gt;
** Werkstatt&lt;br /&gt;
** Bauelemente&lt;br /&gt;
** KFZ- und Zweirad&lt;br /&gt;
** Motoren&lt;br /&gt;
** Bausätze&lt;br /&gt;
** Fundgrube&lt;br /&gt;
* Produkte teils schnell ausverkauft &lt;br /&gt;
* Qualität schwankend. Man kann gute Schnäppchen machen aber auch reinfallen. Umtausch ist dann aber problemlos.&lt;br /&gt;
* Es wird öfters von sorgloser Verpackung berichtet (empfindliche und schwere Produkte besser nicht zusammen bestellen). Reklamationen bei Beschädigungen werden freundlich behandelt.&lt;br /&gt;
* Lieferzeit i.d.r. 2-3 Werktage / knappe Woche bei neuer Sonderliste&lt;br /&gt;
* Ladengeschäft in 85104 Pförring&lt;br /&gt;
* Versandkosten  innerhalb Deutschlands 4,95€&lt;br /&gt;
* Zahlung per Nachnahme (+2,50 €), Bankeinzug, Vorkasse, &#039;&#039;SOFORT&#039;&#039;-Überweisung oder PayPal&lt;br /&gt;
&lt;br /&gt;
=== proma / Isel ===&lt;br /&gt;
Homepage: http://www.isel.com/en/proma_systro.php&lt;br /&gt;
&lt;br /&gt;
The proMa systro GmbH has completed its business transactions since the 20th February 2009.&lt;br /&gt;
* Nachfolger: http://idimod.iselshop.de/&lt;br /&gt;
* Nachfolger für Prototypenzubehör: http://www.gie-tec.de/index.php&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
* fotobeschichtete Leiterplatten Platinenfrästechnik&lt;br /&gt;
* Chemikalien für die Platinenherstellung: Ätzmittel, Flussmittel für Lötanlagen, etc.&lt;br /&gt;
* Profilgehäuse, u.a. von Conrad und Reichelt vertrieben&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== QRP-project ===&lt;br /&gt;
Homepage: http://www.qrpshop.de/&lt;br /&gt;
&lt;br /&gt;
* Bausätze vor allem einfache Kurzwellen-Funkgeräte&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: http://www.reichelt.de&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.&amp;amp;nbsp;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€ wert ist).&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen, dass man auch eine Teillieferung akzeptiert. (Laut Auskunft dauert das länger, besser nach der Inet-Bestellung anrufen und nicht lieferbare Teile aus der Bestellung streichen lassen)&lt;br /&gt;
* Lieferzeiten normalerweise 2 - 4 Arbeitstage&lt;br /&gt;
* niedrige Preise (aber unbedingt Qualität des Artikel checken)&lt;br /&gt;
* Versandkosten 5,60€ (Deutschland); 6,95€ Österreich; Schweiz 16€; Italien 13,95€ EU 15 - 19€;&lt;br /&gt;
* 10€ Mindestbestellwert für alle Länder&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
* holt sich auch ohne Erlaubnis Bankauskünfte bei großen Bestellungen ein&lt;br /&gt;
&lt;br /&gt;
=== RF Microwave ===&lt;br /&gt;
Homepage: http://http://www.rfmicrowave.it/&lt;br /&gt;
&lt;br /&gt;
* Ausschliesslich HF Bauelemente&lt;br /&gt;
* riesige Auswahl an Bauteilen für den Mikrowellenbereich&lt;br /&gt;
* Bestellung nur nach Registrierung im Shop&lt;br /&gt;
* Schnelle Lieferung&lt;br /&gt;
* Firmensitz in Italien&lt;br /&gt;
* Teilweise englischer Shop&lt;br /&gt;
&lt;br /&gt;
=== RFW Elektronik ===&lt;br /&gt;
Homepage: http://www.rfw-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* HF Bauelemente&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: http://www.ribu.at&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;
* innerhalb Österreichs 4,90&amp;amp;#8364; Versandkosten, ab 80,- keine Versandkosten&lt;br /&gt;
* ausserhalb Österreichs 13&amp;amp;#8364; Versandkosten, ab 225&amp;amp;#8364; versandkostenfrei&lt;br /&gt;
* liefert auch an Privatkunden&lt;br /&gt;
* Mindestbestellwert innerhalb Österreichs 10&amp;amp;#8364;, ausserhalb 30&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Richardson Electronic ===&lt;br /&gt;
Homepage: http://www.richardsonrfpd.com/&lt;br /&gt;
&lt;br /&gt;
* Hochfrequenz-Halbleiter, HF-Röhren,&lt;br /&gt;
&lt;br /&gt;
=== Riedl Elektronik ===&lt;br /&gt;
Homepage: http://www.riedl-electronic.at&lt;br /&gt;
&lt;br /&gt;
* großes Angebot v.a. ICs und Trafos&lt;br /&gt;
* recht günstig&lt;br /&gt;
* Rabatt für Schüler/Student&lt;br /&gt;
* Versand nach AT: 3,95€ bis 1kg, ab 100€ frei Haus&lt;br /&gt;
* Versand AT über 1kg sowie Ausland: Nach Aufwand (wird nicht direkt angezeigt)&lt;br /&gt;
&lt;br /&gt;
=== RLX COMPONENTS s.r.o. ===&lt;br /&gt;
Homepage: http://www.rlx.sk&lt;br /&gt;
&lt;br /&gt;
* Man spricht Deutsch&lt;br /&gt;
* Messgeräte, Mikrocontroller-Boards, Bauelemente&lt;br /&gt;
&lt;br /&gt;
=== RM Computertechnik GmbH ===&lt;br /&gt;
Homepage: http://www.rm-computertechnik.de&lt;br /&gt;
&lt;br /&gt;
* Kerngeschäft ist PC-Technik, aber auch großes Sortiment an Kabeln, Litzen und Steckverbindern&lt;br /&gt;
* handelt auch mit einigen Bauelementen, wie LED&#039;s&lt;br /&gt;
&lt;br /&gt;
=== Robotikhardware===&lt;br /&gt;
Homepage: http://www.robotikhardware.de&lt;br /&gt;
&lt;br /&gt;
* Microcontroller&lt;br /&gt;
* Entwicklungsboards&lt;br /&gt;
* Sensoren&lt;br /&gt;
* Robotik-Zubehör&lt;br /&gt;
* günstige Angebote für Hobbyelektroniker&lt;br /&gt;
* auch einzelne Platinen&lt;br /&gt;
&lt;br /&gt;
=== Robotik-Teile.de===&lt;br /&gt;
Homepage: http://www.robotik-teile.de&lt;br /&gt;
&lt;br /&gt;
* Große Auswahl an Elektronik Produkten &lt;br /&gt;
* Microcontroller, Sensoren, Zubehör, u.v.m.&lt;br /&gt;
* Versandkosten betragen immer 4,90 €&lt;br /&gt;
* Zahlbar ber PayPal, Sofortüberweisung, Vorkasse und Nachnahme&lt;br /&gt;
&lt;br /&gt;
=== Benno Rößle Elektronik ===&lt;br /&gt;
Homepage: http://www.roessle-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Masten, Antennen, Befestigungsmat.,Zubehör, Geräte, Anpassteile, HF-Stecker&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: http://de.rs-online.com&lt;br /&gt;
&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer und an Studenten. Bei Internetbestellungen wird per Mail nach Belegen gefragt.&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;
* Preise wurden angepasst, gute Preis/Leistung&lt;br /&gt;
* Preis im Onlineshop sind ohne MwSt angegeben&lt;br /&gt;
* Bei Onlinekauf ab 50 Euro ist der Versand kostenfrei, ohne Mindesbestellwert.&lt;br /&gt;
* Notify-Me Service für Produktabkündigung&lt;br /&gt;
* Auch größere Stückzahlen über Allied möglich&lt;br /&gt;
* Relativ große Auswahl an Sortimenten (Widerstände, Kondensatoren), Einzelteile können teilweise nachgekauft werden&lt;br /&gt;
* Verfügbarkeitsanzeige im Internet ist ziemlich hilfreich&lt;br /&gt;
* Nützliche Tipps zum Thema RoHS&lt;br /&gt;
* Macht anscheinend Abfragen bei SCHUFA &amp;amp; Co. ohne Einverständnis oder Hinweis in den AGB.&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;
* Bezahlung auch mit Kreditkarte möglich&lt;br /&gt;
* Versandkosten innerhalb Deutschlands ab 3,35&amp;amp;#8364;, innerhalb Europas ab 6&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Sasco Holz ===&lt;br /&gt;
Homepage: http://www.sasco.de&lt;br /&gt;
&lt;br /&gt;
* Wie Spoerle eine Tochter von Arrow. &lt;br /&gt;
* Distributor für Analog Devices... &lt;br /&gt;
* Liefert wie Spoerle und Arrow in Deutschland nicht an Privatkunden.&lt;br /&gt;
&lt;br /&gt;
=== Sat-Schneider ===&lt;br /&gt;
Homepage: http://www.sat-schneider.de&lt;br /&gt;
* Bauteile, Ersatzteile  Online-Shop&lt;br /&gt;
* Baugruppen zum Empfang des Digitalen Kurzwellenrundfunks DRM&lt;br /&gt;
&lt;br /&gt;
=== Satistronics ===&lt;br /&gt;
Homepage: http://www.satistronics.com&lt;br /&gt;
&lt;br /&gt;
* typischer &amp;quot;China-Versender&amp;quot;, mit allen Vor- und Nachteilen&lt;br /&gt;
* Lieferzeit bei Standardversand sehr lange (etwa 1 Monat nach D), aber schnellere Lieferung gegen Aufpreis möglich&lt;br /&gt;
* tritt auch bei eBay in Erscheinung ([http://stores.ebay.de/satistronicsstore eBay-Shop]), die Preise dort sind in der Regel aber etwas höher als im Online-Shop&lt;br /&gt;
&lt;br /&gt;
=== Otto Schubert GmbH ===&lt;br /&gt;
Homepage: http://www.schubert-gehaeuse.de&lt;br /&gt;
&lt;br /&gt;
* Kein Online-Shop. Bestellungen nur per Telefon, Fax oder E-Mail &lt;br /&gt;
* Weissblechgehäuse, Gerätegehäuse, wetterfeste Gehäuse&lt;br /&gt;
* Drehkondensatoren&lt;br /&gt;
* Sonderanfertigungen&lt;br /&gt;
* ansässig in 90574 Roßtal&lt;br /&gt;
&lt;br /&gt;
=== Schramm-Software ===&lt;br /&gt;
Homepage: http://www.schramm-software.de/bausatz/&lt;br /&gt;
* Online-Shop, bietet Elektronik-Bausätze mit Mikrocontrollern&lt;br /&gt;
* Bausätze als Lehrmaterial geeignet, da ausführliches Begleitheft mitgeliefert wird (Aufbauanleitung, Schaltung, Controllerprogramm, Experimente...)&lt;br /&gt;
* bisher nur ein relativ kleines Sortiment, soll ergänzt werden&lt;br /&gt;
* Versandkosten innerhalb Deutschlands 2,50 &amp;amp;#8364;, innerhalb der EU 3,50 &amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: http://www.schukat.com&lt;br /&gt;
&lt;br /&gt;
* persönlicher Ansprechpartner / kein callcenter&lt;br /&gt;
* liefert nicht an privaten Endverbraucher, nur b2b&lt;br /&gt;
* mehr als 22.000 aktive, passive und elektromechanische Bauteile in kleinen, mittleren und größeren Mengen ab Lager lieferbar.&lt;br /&gt;
* nicht alle Bauteile in Einzelstückzahlen verfügbar. &lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch PIC, ATMEGA, AVR, usw...)&lt;br /&gt;
* größter MeanWell und Sunon Distributor in Europa&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* stündlich aktuelle Preise und Verfügbarkeit im Internet, ebenso Bilder von Gehäusefootprints u.dgl.&lt;br /&gt;
* Abholung in Monheim am Rhein nach Vereinbarung möglich&lt;br /&gt;
* Versandkosten innerhalb Deutschlands 5,50EUR bis 31,5kg per DPD)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: http://www.schuricht.de&lt;br /&gt;
&lt;br /&gt;
* deutscher Ableger der Distrelec- (Elektronik) und Disdata-Gruppe (Computertechnik)&lt;br /&gt;
* Liefert auch an Privatkunden (getrennte AGBs für gewerbliche und Privatkunden, Lieferung an Privat per Nachnahme: Versandkosten ab 6,54€ plus 4,76€ Nachnahmegebühr).&lt;br /&gt;
** Online-Bestellung von Privatkunde scheiterte daran, dass die  Onlineshop-Bestellformulare nur für gewerbliche Kunden ausgelegt sind und der Onlineshop Bestellungen ohne Firmenangaben nicht annimmt oder gar mit einer internen Fehlermeldung quittierte.&lt;br /&gt;
**Online Bestellung mit &amp;quot;Privat&amp;quot; als Firmenangabe funktionierte einwandfrei.&lt;br /&gt;
**Telefonische Bestellung von Privat funktioniert. Nette, freundliche Behandlung am Telefon, kein Callcenter. Versprochener Rückruf erfolgte mit gewünschten Informationen. Neben Nachnahme wurde für einen relativ teuren Artikel persönliche Abholung angeboten. Angegebene Lieferfrist wurde leicht unterschritten.&lt;br /&gt;
* Papierkatalog über 2000 Seiten, durchgehend farbig, nur für Geschäftskunden erhältlich.&lt;br /&gt;
* Ziemlich teuer&lt;br /&gt;
&lt;br /&gt;
=== SC-Shop ===&lt;br /&gt;
Homepage: http://www.sc-shop.de&lt;br /&gt;
&lt;br /&gt;
* Verkauf ausschließlich an gewerbliche Kunden&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* auf Anfrage spezielle Teilebeschaffung&lt;br /&gt;
* Bestellung auch als Gast&lt;br /&gt;
* schneller Versand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schuro Elektronik GmbH ===&lt;br /&gt;
Homepage: http://www.schuro.de&lt;br /&gt;
&lt;br /&gt;
* Elektronische Bauelemente und Bauteile für den Audio- und Lautsprecherbau (Kondensatoren, Spulen u.dgl.)&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Versandkosten innerhalb Deutschlands gewichtsabhängig ab 5,75&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: http://www.segor.de&lt;br /&gt;
&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 AG ===&lt;br /&gt;
Homepage: http://www.spezial.de&lt;br /&gt;
&lt;br /&gt;
* Distributor&lt;br /&gt;
* Laut AGB auch Verkauf an Privat.&lt;br /&gt;
* Große Verpackungseinheiten/Mindestbestellmengen pro Bauteil&lt;br /&gt;
* Versandkosten pauschal 9,- €  (Deutschland) (Stand 08/2008)&lt;br /&gt;
&lt;br /&gt;
=== Small Control Shop ===&lt;br /&gt;
Homepage: http://www.small-control.de&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Bernd Walter Computer Technology&amp;quot;&lt;br /&gt;
* kleines Lieferprogramm aber ein paar interessante Produkte&lt;br /&gt;
&lt;br /&gt;
=== Simple Development Shop ===&lt;br /&gt;
Homepage: http://simpledevelopment.de/shop/&lt;br /&gt;
&lt;br /&gt;
* Entwicklungsboards&lt;br /&gt;
* Ausgesuchte Bauteile&lt;br /&gt;
* Teilweise spezielle Boards &lt;br /&gt;
* Ab 50€ Versandkostenfrei in Deutschland&lt;br /&gt;
&lt;br /&gt;
=== SMG Diffusion - F1GE ===&lt;br /&gt;
Homepage: http://www.smgdiffusion.com&lt;br /&gt;
( Seite nur französisch )&lt;br /&gt;
&lt;br /&gt;
* Videotechnik, &lt;br /&gt;
* 1,2 GHz / 2,4GHz Module&lt;br /&gt;
* Gebraucht-Messgeräte HP, Tek, Philips  u.a.&lt;br /&gt;
* GHz-Halbleiter&lt;br /&gt;
* Koax-Adapter&lt;br /&gt;
* Antennen&lt;br /&gt;
&lt;br /&gt;
=== Spoerle ===&lt;br /&gt;
Homepage: http://www.spoerle.de&lt;br /&gt;
&lt;br /&gt;
* Früher eine Tochterfirma von Arror. Mittlerweile komplett in Arrow aufgegangen, Webseite leitet auf Arrow um.&lt;br /&gt;
* Aus dem Webshop: &amp;quot;Unser Angebot richtet sich nur an Kaufleute und nicht an Verbraucher.&amp;quot;&lt;br /&gt;
* Wenn es wirklich über Arrow sein muss, dann kann man es als Privatperson bei Arrow Electronics North American Components http://www.arrownac.com/ versuchen, die sich normalerweise nicht weigern ihre Produkte zu verkaufen. Allerdings muss man mit großen Mindestmengen (z.&amp;amp;nbsp;B. BC547 in Schritten von 2000 Stück) und hohen Kosten rechnen.&lt;br /&gt;
:Zu den Kosten gehören zum Beispiel ein mehrfacher Mindermengenzuschlag (&#039;&#039;$10 handling charge will be added to each line item less than $30&#039;&#039;), eine satte &#039;&#039;handling and energy fee of $10.22&#039;&#039; (mehr als 10x zu hoch wie die vergleichbare Gebühr für amerikanische Besteller), hohe Versandkosten (ab $20 nach Deutschland). Dazu kommen die üblichen Kosten für den Import aus dem Ausland (Einfuhrumsatzsteuer, Kreditkartengebühr, ...)&lt;br /&gt;
&lt;br /&gt;
=== SR-Systems ===&lt;br /&gt;
Homepage: http://www.sr-systems.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen für Digital-TV, Sende- und Empfangstechnik&lt;br /&gt;
* DVB-S, DVB-T&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Strixner&amp;amp;Holzinger ===&lt;br /&gt;
Homepage: http://www.sh-halbleiter.de&lt;br /&gt;
&lt;br /&gt;
* Ladengeschäft in München&lt;br /&gt;
* Versand &lt;br /&gt;
* riesiges Angebot an Halbleiter, auch schwer beschaffbare&lt;br /&gt;
* Online-Shop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TAUTEC-ELECTRONICS ===&lt;br /&gt;
Homepage: http://www.tautec-electronics.de&lt;br /&gt;
&lt;br /&gt;
* Online Shop für aktive elektronische Bauelemente&lt;br /&gt;
* günstige Preise (Vorsicht, Preisangaben enthalten keine Mehrwertsteuer) aber Mindestbestellwert 100 Euro&lt;br /&gt;
* alle Artikel ab Lager lieferbar, daher kurze Wartezeiten&lt;br /&gt;
* weltweiter Versand&lt;br /&gt;
* zahlreiche Mengenrabatte&lt;br /&gt;
* viele Ersatzteile aus dem Audio-, Car-HiFi und TV-Bereich&lt;br /&gt;
&lt;br /&gt;
=== TCB-Versand ===&lt;br /&gt;
Homepage: http://www.tcb-versand.de&lt;br /&gt;
&lt;br /&gt;
* insbesondere für Modellbauer ein sehr interresantes Sortiment&lt;br /&gt;
* Stecker,Kabel etc. recht günstig und kleine Mengen abnehmbar &lt;br /&gt;
* Lieferung normal zwischen 1 und 3 Tage&lt;br /&gt;
* leider nur Online-Shop&lt;br /&gt;
&lt;br /&gt;
=== TecHome.de Online-Shop ===&lt;br /&gt;
Hompage: http://www.techome.de/index.html&lt;br /&gt;
&lt;br /&gt;
=== Tec-Shop (Wolfgang Rompel Elektronik) ===&lt;br /&gt;
Homepage: http://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;
=== Technik-Welt / Industrieshop.at ===&lt;br /&gt;
Homepage: http://www.industrieshop.at&lt;br /&gt;
&lt;br /&gt;
* Laut Homepage richtet man sich &amp;quot;an den industriellen Kunden&amp;quot;. Laut AGB sieht man das jedoch nicht so eng, Zitat:&lt;br /&gt;
:: &#039;&#039;TW schließt online Verträge nur mit Kunden ab, die natürliche oder juristischen Personen sind, die ihren Wohnsitz oder Sitz in Österreich, einem Mitgliedsstaat der Europäischen Union (EU25) oder der Schweiz haben.&#039;&#039;&lt;br /&gt;
* [[#Farnell|Farnell]] Teile&lt;br /&gt;
* In Österreich&lt;br /&gt;
* Schnelle Lieferung (2 Tage)&lt;br /&gt;
&lt;br /&gt;
=== Teske electronics ===&lt;br /&gt;
Homepage: http://www.teske-electronics.de&lt;br /&gt;
&lt;br /&gt;
* Noch relativ übersichtliches Produktsortiment (Dez. 2012) aber schon einige interessante Teile&lt;br /&gt;
* Bisher überwiegend SMD Bauteile&lt;br /&gt;
* Kein Mindestbestellwert&lt;br /&gt;
* Versandkosten ab 2,85€&lt;br /&gt;
* Lieferung nur innerhalb Deutschlands&lt;br /&gt;
* Wunschliste für neue Produkte&lt;br /&gt;
* Beschaffung von Bauteilen möglich, die nicht im Shop angeboten werden&lt;br /&gt;
* Zahlung per Vorkasse, PayPal, Nachnahme oder Rechnung (für Stammkunden) möglich.&lt;br /&gt;
&lt;br /&gt;
=== Thinkembedded.ch ===&lt;br /&gt;
Homepage: http://www.thinkembedded.ch&lt;br /&gt;
&lt;br /&gt;
* in der Schweiz (auch Abholung möglich), Versand CH ab SFr 12.- (bis 5kg)&lt;br /&gt;
* keine Mindestbestellmenge, Bezahlung: Barbezahlung, Rechnung, PayPal &lt;br /&gt;
* Demoboarde von div. Herstellern (Olimex, ST, ARM-Keil, ETT, Conitex)&lt;br /&gt;
* Demoboarde mit ARM (Cortex M)uC von ST, NXP, Energy Micro&lt;br /&gt;
* Demoboarde mit ARM Cortex A uC von Olimex&lt;br /&gt;
* Keil Debugger/Programmer Ulink ME/2/Pro&lt;br /&gt;
* MSP4300 Demoboard&lt;br /&gt;
* PIC Demoboarde und Programmer&lt;br /&gt;
* AVR Demoboarde und Programmer&lt;br /&gt;
* Messgeräte (BMC Messsysteme, Intronix LogicPort)&lt;br /&gt;
* Learning Kits&lt;br /&gt;
* Mehrsprachig (E, D, F), Preise in SFR / Euro&lt;br /&gt;
&lt;br /&gt;
=== TIGAL KG ===&lt;br /&gt;
Homepage: http://www.tigal.com&lt;br /&gt;
&lt;br /&gt;
* Boards und Tools für Embedded-Elektronik&lt;br /&gt;
* In Österreich &lt;br /&gt;
* Versandkosten ab € 7,00 in Österreich, ab € 10,00 nach Deutschland.&lt;br /&gt;
* Preisangaben ohne MWSt. Für Privatkunden kommen 20% österreichische Mehrwertsteuer hinzu.&lt;br /&gt;
* U.a. ZeroLogic Logik-Analysatoren.&lt;br /&gt;
&lt;br /&gt;
=== TME (Transfer Multisort Elektronik) ===&lt;br /&gt;
Homepage: http://www.tme.eu/de&lt;br /&gt;
&lt;br /&gt;
*breites Sortiment&lt;br /&gt;
*parametrische Suche&lt;br /&gt;
*Verkauf über die deutsche Tochter (19 % statt 21 % polnische Umsatzsteuer)&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop / AIR Electronics GmbH ===&lt;br /&gt;
Homepage: http://www.trade-shop.de&lt;br /&gt;
&lt;br /&gt;
* Trotz knackiger Sprüche auf der englischen Version der Webseite (&amp;quot;Electronic Components Superstore&amp;quot;) eher kleines Angebot elektronischer Bauteile&lt;br /&gt;
* 20 Euro Mindestbestellmenge (Stand Februar 2008)&lt;br /&gt;
* ab 6,90 Euro Versandkosten (Deutschland, bis 1kg)  (Stand Februar 2008)&lt;br /&gt;
&lt;br /&gt;
=== Trenkenchu &amp;amp; Stadler GbR ===&lt;br /&gt;
Homepage: http://www.ts-audio.de&lt;br /&gt;
&lt;br /&gt;
* die meisten Artikel sind deutlich teurer als der Marktpreis, es sind jedoch auch Schnäppchen dabei, z.B. HDMI-Kabel&lt;br /&gt;
&lt;br /&gt;
=== Trenz-electronic ===&lt;br /&gt;
Homepage: http://www.trenz-electronic.de&lt;br /&gt;
&lt;br /&gt;
* FPGA-Boards mit Xilinx-FPGAs (Xilinx, Digilent, ...) und Zubehör&lt;br /&gt;
* Weitere teils sehr spezielle Produkte, auch Eigen-Entwicklungen&lt;br /&gt;
* Liefert auch an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== TV-Ersatzteile ===&lt;br /&gt;
Homepage: http://www.tversatzteile.de&lt;br /&gt;
&lt;br /&gt;
* TV-, Audio-, Video-Ersatzteile, Aktive / Passive Bauteile&lt;br /&gt;
* Fernbedienungen Haushaltstechnik&lt;br /&gt;
&lt;br /&gt;
=== UKW-Berichte ===&lt;br /&gt;
Homepage: http://www.ukw-berichte.de&lt;br /&gt;
&lt;br /&gt;
* Antennen, Bauteile, Bausätze, Literatur für Amateurfunk&lt;br /&gt;
* ansässig in 91081 Baiersdorf&lt;br /&gt;
&lt;br /&gt;
=== Voelkner ===&lt;br /&gt;
Homepage: http://voelkner.de&lt;br /&gt;
* Großer Teil des Conrad-Programms, identische Nummern, identische Aufkleber auf der Ware, Preise weitgehend identisch oder nur ein paar Cent abweichend, bei bestimmten Artikelgruppen (z.B. Werkzeug) aber auch bis zu 25% billiger&lt;br /&gt;
* Versandkosten Deutschland: 4,95€; ab 25€ Warenwert und Sofortüberweisung.de versandkostenfrei / Versandkosten-Flatrate für 15€ pro Jahr&lt;br /&gt;
* Versandkosten EU: 9,95€&lt;br /&gt;
* Möglichkeit der Versandkostenflatrate (D): Einmalig 14,95€ / gültig für ein Jahr&lt;br /&gt;
* Legt jeder Bestellung gleich wieder einen Gutschein über 5€ bei MBW 25€ bei (Flat nur bei häufigen, kleinen Bestellungen sinnvoll); außerdem kommt etwa alle 2-3 Monate selbiger Gutschein + versandkostenfreie Lieferung per Mail, ebenfalls MBW 25€&lt;br /&gt;
* Verpackungsqualität wechselnd, mal brauchbar, mal eher Pollin-Niveau. Selbst kleine Bestellungen, die gefahrlos per Brief/Großbrief verschickt werden könnten werden in einem großen Paket versendet.&lt;br /&gt;
&lt;br /&gt;
=== VOTI Webshop ===&lt;br /&gt;
Homepage: http://www.voti.nl/shop/catalog.html&lt;br /&gt;
&lt;br /&gt;
* relativ kleines Lieferprogramm&lt;br /&gt;
* einige interessante Restposten (Surplus)&lt;br /&gt;
&amp;lt;!-- nicht mehr: * verkauft auch VID/PID-Paare für USB-Applikationen --&amp;gt;&lt;br /&gt;
* Sitz in Amersfoort, Niederlande&lt;br /&gt;
&lt;br /&gt;
=== Walter elektronik ===&lt;br /&gt;
Homepage: http://www.walter-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile, Röhren&lt;br /&gt;
&lt;br /&gt;
=== Waschbär Soft 2010 ===&lt;br /&gt;
Homepage: http://www.xn--waschbr-soft-2010-vqb.de&lt;br /&gt;
&lt;br /&gt;
* Onlineversandhaus für Unterhaltungselektronik, &amp;quot;Haushaltselektronik&amp;quot;, Computer und -zubehör&lt;br /&gt;
* keine elektronischen Bauteile&lt;br /&gt;
&lt;br /&gt;
=== Watterott electronic GmbH===&lt;br /&gt;
Homepage: http://www.watterott.com&lt;br /&gt;
&lt;br /&gt;
* Distributor für Adafruit, Arduino, BeagleBoard/PandaBoard, Embedded Artists, GHI, Olimex, Parallax, Pololu, Seeed Studio, Solarbotics, SparkFun... &lt;br /&gt;
* Entwicklungskits von Atmel, Cypress, Freescale, Microchip, NXP, STM, TI...&lt;br /&gt;
* Spezialbauteile von Davicom, FTDI, VLSI, WIZnet...&lt;br /&gt;
* Bungard Basismaterial + Chemie&lt;br /&gt;
* kein Mindestbestellwert&lt;br /&gt;
* Zahlung: Vorkasse, Sofortüberweisung, PayPal, Nachnahme, Kreditkarte (Visa/Mastercard), Rechnung (nur gewerbliche Kunden)&lt;br /&gt;
* Versandkosten Dtl. (DHL): &lt;br /&gt;
** bis  75 EUR Warenwert: 3,50 Euro&lt;br /&gt;
** ab   75 EUR Warenwert: versandkostenfrei&lt;br /&gt;
* Versandkosten EU (DHL): &lt;br /&gt;
** bis 150 EUR Warenwert: 10,00 Euro&lt;br /&gt;
** bis 250 EUR Warenwert:  8,90 Euro&lt;br /&gt;
** bis 500 EUR Warenwert:  5,95 Euro&lt;br /&gt;
** ab  500 EUR Warenwert:  versandkostenfrei&lt;br /&gt;
* Schneller, entgegenkommender Service&lt;br /&gt;
* in der &amp;quot;c&#039;t Hardware Hacks&amp;quot; 01/2013 ist ein Artikel über Stephan Watterott und seinen Online-Shop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
September 2012 sind bei Westfalia gerade mal zehn Bauteile unter &amp;quot;Elektronische Bauteile&amp;quot; gelistet&lt;br /&gt;
 &lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage Deutschland: http://www.westfalia.de&lt;br /&gt;
Homepage Österreich: http://www.westfalia-versand.at&lt;br /&gt;
&lt;br /&gt;
* Vor 85 Jahren in Hagen, Westfalen gegründet&lt;br /&gt;
* Elektronik nur ein kleiner Teil des Angebotes. Eher insgesamt Haushalts-, Werkstätten-, Agrar- und Gartenbedarf&lt;br /&gt;
* Elektroniksortiment stark schwankend. Momentan (Juni 2008) wenig Auswahl.&lt;br /&gt;
* Mindestbestellwert 18 €, bei Neukundenbestellungen mit Prämienanforderungen (wenig wertiges Geschenk) sogar 50 €.&lt;br /&gt;
* 4,95&amp;amp;#8364; Versandkosten, ab 150&amp;amp;#8364; Bestellwert versandkostenfrei&lt;br /&gt;
* Transportversicherung wird zusätzlich mit einem Zuschlag von 0,8% des Warenwertes berechnet.&lt;br /&gt;
* Einmalige Bestellung führte zu jahrelanger Zusendung von Werbung für Westfalia-Angeboten mit Gewinnspielen (Glücksnummern, Rubbellose, Glücksschlüssel, etc.)&lt;br /&gt;
* Verpackung ähnlich &amp;quot;sorgfältig&amp;quot; wie bei [[#Pollin_Electronic|Pollin Electronic]]. Übergroße Kartons, wenig Verpackungsmaterial, schweres Teil (Labornetzgerät) flog lose im Karton herum und zertrümmerte andere Ware.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WilTec Wildanger Technik GmbH ===&lt;br /&gt;
Homepage: http://shop.wiltec.info&lt;br /&gt;
&lt;br /&gt;
* Aoyue Lötgeräte (Heißluft, Löten, Entlöten), Netzteile, Werkzeuge&lt;br /&gt;
* Aoyue Zubehör (Lötspitzen, Heißluftdüsen), Ersatzteile&lt;br /&gt;
* Andere, nicht Elektronik-Angebote, wie KFZ-Tuningteile&lt;br /&gt;
* Versand. Bei Voranmeldung auch Lagerverkauf.&lt;br /&gt;
&lt;br /&gt;
=== Wüstens frag-jan-zuerst ===&lt;br /&gt;
Homepage: http://www.die-wuestens.de/dindex.htm&lt;br /&gt;
&lt;br /&gt;
* Röhrentechnik&lt;br /&gt;
* Hochspannungs-Spezialteile&lt;br /&gt;
&lt;br /&gt;
=== WIMO ===&lt;br /&gt;
Homepage: http://www.wimo.de&lt;br /&gt;
&lt;br /&gt;
* Große Auswahl an Amateurfunktechnik&lt;br /&gt;
&lt;br /&gt;
=== Zech DG0VE ===&lt;br /&gt;
Homepage: http://www.dg0ve.de&lt;br /&gt;
&lt;br /&gt;
* Baugruppen für Amateurfunk&lt;br /&gt;
&lt;br /&gt;
=== Diverse ===&lt;br /&gt;
* http://www.chip-flip.com - Europäisches Bauelementesuchsystem, franchised Lieferantensuche, Datenblätter und viele nützliche Informationen&lt;br /&gt;
* http://www.ecomponents-store.com/ Elektronische Bauelemente kaufen - Hier finden Sie eine große Auswahl an elektronischen und elektromechanischen Bauelementen von über 40 Herstellern.&lt;br /&gt;
* http://www.franchised-distributors.eu/ - Finden Sie Vertragsdistributoren von über 800 Halbleiterherstellern für elektronische und elektromechanische Bauelemente.&lt;br /&gt;
&lt;br /&gt;
TODO: elektronik-fundgrube&lt;br /&gt;
&lt;br /&gt;
==Ebay-Shops==&lt;br /&gt;
&lt;br /&gt;
===Ego-China===&lt;br /&gt;
http://stores.ebay.de/Ego-China-Electronics   TFTs und LCDs &amp;lt;br /&amp;gt; Versand aus China (2-3 Wochen)&lt;br /&gt;
&lt;br /&gt;
===Sure-Electronics===&lt;br /&gt;
http://stores.ebay.de/Sure-Electronics   Highpower LEDs und Verstärker &amp;lt;br /&amp;gt;&lt;br /&gt;
Hat auch einen eigenen Shop: http://www.sureelectronics.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
Versand aus China&lt;br /&gt;
&lt;br /&gt;
===Ether-Deal===&lt;br /&gt;
http://stores.ebay.de/ether-deal   Unter sonstiges viele versch. Elektronik-teile &amp;lt;br /&amp;gt; Versand aus China&lt;br /&gt;
&lt;br /&gt;
===NooElec===&lt;br /&gt;
http://stores.ebay.de/NooElec USB-AVR Boards (mega32u2) und rgbled-matrizen &amp;lt;br /&amp;gt; Versand aus Kanada&lt;br /&gt;
&lt;br /&gt;
===Sine qua non surplus===&lt;br /&gt;
http://stores.ebay.de/Sinequanon-Surplus-Electronics Großbritannien&lt;br /&gt;
&lt;br /&gt;
==Messgeräte ==&lt;br /&gt;
=== Neue Messgeräte ===&lt;br /&gt;
&lt;br /&gt;
Viele der oben genannten Elektronikversender verkaufen auch Messgeräte. Darüber hinaus gibt es diverse Versender, die sich hauptsächlich oder ausschließlich auf Messgeräte spezialisiert haben. Allerdings verkaufen viele davon nicht an Privat.&lt;br /&gt;
&lt;br /&gt;
==== CalPlus GmbH ====&lt;br /&gt;
Homepage: http://www.calplus.de &amp;lt;br /&amp;gt;&lt;br /&gt;
Shop: http://www.scopeshop.de&lt;br /&gt;
&lt;br /&gt;
==== Cosinus ComputerMesstechnik ====&lt;br /&gt;
Homepage: http://www.cosinus.de&lt;br /&gt;
&lt;br /&gt;
* Nicht an Privat&lt;br /&gt;
&lt;br /&gt;
==== dataTec ====&lt;br /&gt;
Homepage: http://www.datatec.de&lt;br /&gt;
&lt;br /&gt;
* Große Auswahl&lt;br /&gt;
* &amp;lt;s&amp;gt;(Nicht an Privat)&amp;lt;/s&amp;gt; Bestellung von Privat problemlos möglich, Privatpersonen werden laut ABG per Vorkasse beliefert&lt;br /&gt;
* Studenten bekommen Rabatt, je nach dem, was bestellt wird&lt;br /&gt;
* Umständlicher Bestellvorgang, seitens DataTec teilweise auf dem Postweg -&amp;gt; Es dauert teil sehr lange bis die Ware ankommt&lt;br /&gt;
* Sehr freundlicher und kompetenter Service, per eMail als auch telefonisch&lt;br /&gt;
&lt;br /&gt;
==== Elektronik-Kontor Messtechnik GmbH ====&lt;br /&gt;
Homepage: http://www.ekomess.de&lt;br /&gt;
&lt;br /&gt;
==== Meilhaus Electronic GmbH ====&lt;br /&gt;
Homepage: http://www.meilhaus.de&lt;br /&gt;
&lt;br /&gt;
* Diverse Markenhersteller&lt;br /&gt;
* Eigenmarken&lt;br /&gt;
&lt;br /&gt;
==== PinSonne-Elektronik ====&lt;br /&gt;
Homepage: http://www.pinsonne-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Onlineshop&lt;br /&gt;
* Sehr kleines Sortiment&lt;br /&gt;
* UNI-T, RIGOL und andere asiatische Firmen&lt;br /&gt;
&lt;br /&gt;
==== PK elektronik Poppe GmbH ====&lt;br /&gt;
Homepage: http://www.pk-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* U.a. Fluke Distributor.&lt;br /&gt;
&lt;br /&gt;
====Präzitronic Hennig / Messgeräte Chemnitz====&lt;br /&gt;
Homepage: http://www.messgeraete-chemnitz.de&lt;br /&gt;
&lt;br /&gt;
* Verkauft explizit auch an Privat.&lt;br /&gt;
* Owon&lt;br /&gt;
* Selbst übersetzte deutsche Owon-Handbücher&lt;br /&gt;
* Fluke&lt;br /&gt;
* Extech&lt;br /&gt;
* Zusätzlich kleines Angebot an Gebrauchtgeräten&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ScopeShop Hamburg ====&lt;br /&gt;
&lt;br /&gt;
* Von CalPlus übernommen, siehe [[#CalPlus_GmbH|CalPlus]]&lt;br /&gt;
&lt;br /&gt;
==== SI Scientific Instruments GmbH ====&lt;br /&gt;
Homepage: http://www.si-scientific.de (Onlineshop) &amp;lt;br /&amp;gt;&lt;br /&gt;
Homepage: http://www.si-gmbh.de (komplettes Programm)&lt;br /&gt;
&lt;br /&gt;
* Onlineshop auf si-scientific.de&lt;br /&gt;
* Akzeptiert PayPal&lt;br /&gt;
 &lt;br /&gt;
==== SKY Messtechnik GmbH ====&lt;br /&gt;
Homepage: http://www.sky-messtechnik.de&lt;br /&gt;
&lt;br /&gt;
* Kein Onlineshop (E-Mail oder Telefon)&lt;br /&gt;
&lt;br /&gt;
==== TESTEC ====&lt;br /&gt;
Homepage: http://www.testec.info&lt;br /&gt;
&lt;br /&gt;
* Tastköpfe-Hersteller&lt;br /&gt;
* Hameg Vertriebspartner&lt;br /&gt;
* B+K Precision Generalimporteur&lt;br /&gt;
&lt;br /&gt;
==== Zeitech ====&lt;br /&gt;
Homepage: http://www.zeitech.de/shop/&lt;br /&gt;
&lt;br /&gt;
* Diverses (Rigol, Owon, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Gebrauchte Messgeräte ===&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt enthält Anbieter bei denen gebrauchte Messgeräte erhältlich sind.&lt;br /&gt;
&lt;br /&gt;
==== Astro Electronic ====&lt;br /&gt;
Homepage: http://www.astro-electronic.de&lt;br /&gt;
&lt;br /&gt;
==== HTB-Elektronik ====&lt;br /&gt;
Homepage: http://www.htb-elektronik.com&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
&lt;br /&gt;
==== IX Instrumex ====&lt;br /&gt;
Homepage: http://www.instrumex.de/index.cgi?User:LANGUAGE=de&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
&lt;br /&gt;
==== Christoph Lüders MessTechnik ====&lt;br /&gt;
Homepage: http://www.CLMT.de &amp;lt;br&amp;gt;&lt;br /&gt;
Online-Shop: http://www.shop-016.de/shop-CLMT.html &amp;lt;br&amp;gt;&lt;br /&gt;
eBay: http://myworld.ebay.de/c_h_r/&lt;br /&gt;
&lt;br /&gt;
* Hat 2010 die Restbestände von Förtig übernommen&lt;br /&gt;
&lt;br /&gt;
==== mbmt Messtechnik ====&lt;br /&gt;
Homepage: http://www.mbmt.com&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Verkauf nur an Gewerbetreibende&lt;br /&gt;
&lt;br /&gt;
==== Rosenkranz Elektronik ====&lt;br /&gt;
Homepage: http://www.rosenkranz-elektronik.de&amp;lt;br&amp;gt;&lt;br /&gt;
eBay Shop: http://stores.ebay.de/Rosenkranz-Elektronik-GmbH-Shop&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Auch auf eBay zu finden&lt;br /&gt;
&lt;br /&gt;
==== Helmut-Singer-Elektronik ====&lt;br /&gt;
Homepage: http://www.helmut-singer.de&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Verkauf auch an Privat&lt;br /&gt;
* An den meisten Samstagen im Jahr auch Lagerverkauf, sonst Versand&lt;br /&gt;
&lt;br /&gt;
==== Sphere ====&lt;br /&gt;
Homepage: http://www.sphere.bc.ca&amp;lt;br&amp;gt;&lt;br /&gt;
Messgeräte und Ersatzteile: http://www.sphere.bc.ca/test/index.html&lt;br /&gt;
&lt;br /&gt;
* Gebrauchte Messgeräte&lt;br /&gt;
* Ersatzteile&lt;br /&gt;
** Besonders bekannt für Tektronix-Ersatzteile&lt;br /&gt;
&lt;br /&gt;
==== Tektronix TekSelect ====&lt;br /&gt;
Homepage: http://www.tek.com/Measurement/tekselect/&lt;br /&gt;
&lt;br /&gt;
* Tektronix verkauft selber gebrauchte und überarbeitete Tektronix-Messgeräte unter dem Label &#039;&#039;TekSelect&#039;&#039;.&lt;br /&gt;
* Original Tektronix-Garantie&lt;br /&gt;
* Der Bestellvorgang nervt, man muss Kontaktaufnahme durch einen &amp;quot;Representative&amp;quot; erbeten.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;br /&gt;
* [[Lokale Elektroniklieferanten]]&lt;br /&gt;
* [[Eisenwarenversender]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&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;br /&gt;
&lt;br /&gt;
[[Kategorie:Lieferanten]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FET&amp;diff=80679</id>
		<title>FET</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FET&amp;diff=80679"/>
		<updated>2014-01-06T10:14:20Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Link auf guten Beitrag von Yalu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel versteht sich als Unterpunkt zum Artikel [[Leistungselektronik]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein FET (engl. &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;E&#039;&#039;&#039;ffect &#039;&#039;&#039;T&#039;&#039;&#039;ransistor) ist ein  Feldeffekttransistor. Der FET ist ein Bauelement, das im Gegensatz zum Bipolartransistor (engl. &#039;&#039;&#039;B&#039;&#039;&#039;ipolar &#039;&#039;&#039;J&#039;&#039;&#039;unction &#039;&#039;&#039;T&#039;&#039;&#039;ransistor, BJT) mit Spannung und nicht mit Strom gesteuert wird. Unterschieden werden&lt;br /&gt;
* MOSFET = engl. &#039;&#039;&#039;M&#039;&#039;&#039;etall &#039;&#039;&#039;O&#039;&#039;&#039;xide &#039;&#039;&#039;S&#039;&#039;&#039;emiconductor &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;E&#039;&#039;&#039;ffect &#039;&#039;&#039;T&#039;&#039;&#039;ransistor; Metalloxidschicht-FET, größte Teilgruppe der FETs mit isoliertem Gate &lt;br /&gt;
* JFET = engl. &#039;&#039;&#039;J&#039;&#039;&#039;unction &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;E&#039;&#039;&#039;ffect &#039;&#039;&#039;T&#039;&#039;&#039;ransistor, Übergangszonen FET, der steuerbare Kanal wird durch einen PN-Übergang wie in einer Diode gebildet&lt;br /&gt;
&lt;br /&gt;
Die drei Anschlüsse eines FETs werden &#039;&#039;Gate&#039;&#039;, &#039;&#039;Drain&#039;&#039; und &#039;&#039;Source&#039;&#039; genannt. Unter Umständen ist ein vierter Anschluß vorhanden, der &#039;&#039;Bulk&#039;&#039; genannt wird. Normalerweise ist Bulk intern mit Source verbunden. Wenn dies nicht der Fall ist, muss diese Verbindung durch den Designer in der Schaltung hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
== FET-Typen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FETs werden hauptsächlich unterschieden in N-Kanal und P-Kanal, sowie &amp;quot;selbst sperrend = Anreicherungstyp&amp;quot; (engl. enhancement type) und &amp;quot;selbst leitend = Verarmungstyp&amp;quot; (engl. depletion type). Beim selbstleitenden FET ist der Transitor bei 0V Gate-Source Spannung maximal leitend (durchgesteuert) und wird durch Anlegen einer Spannung ans Gate gesperrt. Beim selbstsperrenden FET (größte Gruppe) ist der Transistor bei 0V Gate-Source Spannung gesperrt und wird durch Anlegen einer Spannung ans Gate leitend. Ist die Linie zwischen Drain und Source durchgezogen handelt es sich um einen selbstleitenden, bei einer gestrichelten Linie um einen selbstsperrenden FET. JFETs gibt es nur als Verarmungstyp. Im weiteren Artikel wird nur mehr der &amp;quot;selbstsperrende&amp;quot; MOSFET betrachtet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Typen von Feldeffekttransistoren&amp;lt;br/&amp;gt;&amp;amp;nbsp;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Typ || N-Kanal || P-Kanal&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JFET  || [[bild:JFET-N.png|center]]&lt;br /&gt;
* drittgrößte Gruppe&lt;br /&gt;
* bislang nur für kleine Leistungen verfügbar&lt;br /&gt;
* JFETs mit hoher Leistung sind im Kommen&lt;br /&gt;
* Eingangsstufen von OPVs&lt;br /&gt;
* Eingangsstufen von HF-Verstärkern bis in den GHz-Bereich&lt;br /&gt;
* als einfache [[Konstantstromquelle]] geeignet&lt;br /&gt;
| [[bild:JFET-P.png|center]]&lt;br /&gt;
* selten &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MOSFET&amp;lt;br/&amp;gt;Anreicherungstyp&amp;lt;br/&amp;gt;(selbst sperrend) || [[bild:MOS-EN.png|center]]&lt;br /&gt;
* größte Gruppe&lt;br /&gt;
* sehr viele Typen erhältlich&lt;br /&gt;
| [[bild:MOS-EP.png|center]]&lt;br /&gt;
* zweitgrößte Gruppe&lt;br /&gt;
* bei gleicher Geometrie etwas schlechter als ein N-Kanal Typ&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MOSFET&amp;lt;br/&amp;gt;Verarmungstyp&amp;lt;br/&amp;gt;(selbst leitend) || [[bild:MOS-DN.png|center]]&lt;br /&gt;
* selten&lt;br /&gt;
| [[bild:MOS-DP.png|center]]&lt;br /&gt;
* sehr selten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vorteile des FET ===&lt;br /&gt;
&lt;br /&gt;
* Niedrigere Verluste als bei Bipolartransistoren.&lt;br /&gt;
* Sehr schnelles Schalten möglich, daher für sehr hohe Frequenzen geeignet (keine Speicherzeit wie beim BJT).&lt;br /&gt;
* Einfaches Parallelschalten im Schaltbetrieb, da Unterschiede im &amp;lt;math&amp;gt;R_{DS,on}&amp;lt;/math&amp;gt; durch den positiven Temperaturkoeffizienten ausgeglichen werden.&lt;br /&gt;
* Leistungslose Ansteuerung im statischen Fall, jedoch hohe Umladeverluste am Gate!&lt;br /&gt;
* oft preiswerter als vergleichbare Bipolartransistoren (engl. &#039;&#039;&#039;B&#039;&#039;&#039;ipolar &#039;&#039;&#039;J&#039;&#039;&#039;unction &#039;&#039;&#039;T&#039;&#039;&#039;ransistor, BJT)&lt;br /&gt;
* Relativ unempfindlich gegen Überspannung zwischen Drain und Source. Bei Überschreitung der Maximalspannung zwischen Drain und Source findet ein sogenannter &amp;quot;Durchbruch&amp;quot; statt. Dies ist vergleichbar mit dem Zener-Effekt. Ist die Energiemenge begrenzt, ist dieser Durchbruch reversibel und der FET wird NICHT zerstört, im Gegensatz zum BJT.&lt;br /&gt;
&lt;br /&gt;
=== Nachteile des FET ===&lt;br /&gt;
&lt;br /&gt;
* Nur bedingt für hohe Spannungen [[Transistor#Wann setzt man einen MOSFET, Bipolartransistor, IGBT oder Thyristor ein ? |geeignet]], die ON-Verluste sind ab ca. 250V höher als bei einem [[IGBT]]. &lt;br /&gt;
* Parasitäre Diode parallel zur Drain-Source Strecke ist immer enthalten, das (Ab-)Schaltverhalten dieser Dioden ist meist schlechter als separate Dioden, was häufig zu unerwünschten Schwingungen führt.&lt;br /&gt;
* Empfindlicher gegen ESD am Gate als BJT&lt;br /&gt;
* Positiver Temperaturkoeffizient (TK), der &amp;lt;math&amp;gt;R_{DS,on}&amp;lt;/math&amp;gt; ist stark temperaturabhängig und steigt von 25°C (Datenblattangabe) auf 150°C ungefähr um den Faktor 2. Dadurch steigen auch die Verluste und damit die Erwärmung des Bauteiles.&lt;br /&gt;
&lt;br /&gt;
=== Erklärung der wichtigsten Datenblattwerte ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Parameter&#039;&#039;&#039; || &#039;&#039;&#039;Symbol&#039;&#039;&#039; || &#039;&#039;&#039;Wert&#039;&#039;&#039; (Beispiel)|| &#039;&#039;&#039;Erklärung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Drain Source (Breakdown) Voltage || V(BR)_DSS oder V_DS || 75V || Maximale Spannungsfestigkeit des Bauteiles zwischen Drain und Source&lt;br /&gt;
|-&lt;br /&gt;
| Continuous Drain current  || I_D(on)   || 55A @125°C  || Maximaler Dauerstrom bei 125°C Gehäusetemperatur &lt;br /&gt;
|-&lt;br /&gt;
| Pulsed Drain Current || ID_pulse oder I_CD(on) || 240A || Maximaler Pulsstrom (Achtung die zulässige Zeitdauer des Pulses kann nur über die maximale Junctiontemperatur ermittelt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Repetetive Avalanche Energy || t_sc ||  280mJ || Maximale Energie, welche beim Avalanche Durchbruch bei Überschreiten der maximalen Drain-Source Spannung im MOSFET bei z.&amp;amp;nbsp;B. 1% Puls/Pausen Verhältnis regelmäßig auftreten darf, ohne den FET zu schädigen&lt;br /&gt;
|-&lt;br /&gt;
| Drain-Source ON Resistance || R_DS_ON ||  0,01Ω || Widerstand des eingeschalteten FETs bei &#039;&#039;&#039;25°C&#039;&#039;&#039;, V_GS = 10V und ID = 30A&lt;br /&gt;
|-&lt;br /&gt;
| Drain-Source ON Resistance || R_DS_on ||  0,021Ω || Widerstand des eingeschalteten FETs bei &#039;&#039;&#039;175°C&#039;&#039;&#039;, V_GS = 10V und ID = 30A&lt;br /&gt;
|-&lt;br /&gt;
| Thermal Resistance (junction-case) ||  R_th_JC ||  0,8K/W || Thermischer Widerstand im Transistor vom eigentlichen Chip im Inneren (junction) bis zur Rückseite des Transistorgehäuses (case)&lt;br /&gt;
|-&lt;br /&gt;
| Gate-Source Threshold Voltage ||  V_GS(th) || 2,0-4,5V || Gatespannung, ab welcher der Transistor minimal leitend wird (I_D typisch 100-200µA), große Toleranz, typisch 1:2 zwischen Minimum und Maximum&lt;br /&gt;
|-&lt;br /&gt;
| Turn-on Delay ||  t_d(on) || 40ns ||  Verzögerung zwischen dem Einschalten am Gate bis zur Reaktion im Drainstrom&lt;br /&gt;
|-&lt;br /&gt;
| Rise Time ||  t_r || 200ns ||  Anstiegszeit des Transistorstromes am Drain&lt;br /&gt;
|-&lt;br /&gt;
| Turn-off Delay || t_d(off) || 120ns ||  Verzögerung zwischen Abschalten am Gate bis zur Reaktion im Drainstrom&lt;br /&gt;
|-&lt;br /&gt;
| Fall Time ||  t_f  || 60ns || Abfallzeit des Transistorstromes am Drain  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die oben genannten Zeiten gelten ausschließlich unter den angegebenen Messbedungungen (Gatewiderstand, Treiberspannung, etc.) und müssen für die eigene Anwendung ggf. neu berechnet werden. Meist wird man sie eher messen, weil die Rechung zu aufwändig und bisweilen unmöglich ist. Achtung: Die Tabelle ist nur für eine Temperatur von 25° C gültig !!&lt;br /&gt;
&lt;br /&gt;
Gerade bei der &#039;&#039;&#039;Gate-Source Threshold Voltage &amp;lt;math&amp;gt;V_{GS}(th)&amp;lt;/math&amp;gt;&#039;&#039;&#039; gibt es hier immer wieder Verwirrung. Sie gibt an, ab welcher Spannung der MOSFET &#039;&#039;&#039;minimal&#039;&#039;&#039; leitfähig wird, je nach Datenblatt bei 100-250µA Drainstrom. Diese Spannung ist technologisch bedingt auch heute noch einer starken Toleranz unterworfen, typisch 1:2 zwischen Minimum und Maximum. Im praktischen Betrieb muss man mindestens das Doppelte anlegen, um den MOSFET voll aufzusteuern. Wer es solide machen will nimmt dabei typisch 10-15V für einen Standardtypen und 3-5V für einen Logic Level Mosfet, dabei &#039;&#039;&#039;immer&#039;&#039;&#039; den Wert aus dem Datenblatt beachten, welcher unter &amp;lt;math&amp;gt;R_{DS-ON}&amp;lt;/math&amp;gt; als Messbedingung angegeben ist. Deshalb braucht man bei 5V Ansteuerung einen Typen, der &#039;&#039;&#039;sicher&#039;&#039;&#039; bei typ. 4,5V voll durchgesteuert ist, z.B. IRLZ34N. Bei 3,3V ist er bereits nicht mehr zuverlässig nutzbar. Es gibt auch Typen mit noch geringerer Spannung für Vollaussteuerung. Wer einen BUZ11 mit 5V ansteuert riskiert ein Abfackeln des MOSFETs, denn je nach Toleranz kann er bereit ganz gut aufgesteuert sein oder auch nicht.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039; Parasitäre Diode des FETs  &#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Parameter&#039;&#039;&#039; || &#039;&#039;&#039;Symbol&#039;&#039;&#039; || &#039;&#039;&#039;Value&#039;&#039;&#039; (Beispiel)|| &#039;&#039;&#039;Erklärung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Continuous Current (Diode) ||  I_S || 75A || Maximaler Dauerstrom der parasitären Diode, meist identisch zum maximalen Dauerstrom des MOSFETs&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (Diode)||  V_SD || 1,0..1,3V || Spannungsfall an der parasitären Diode &lt;br /&gt;
|-&lt;br /&gt;
| Reverse Recovery Time ||  t_rr || 80..120ns || Zeit, die die Elektronen brauchen um aus der leitenden Diode vollständig abzufließen. Während dieser Zeit fließt der Strom in &#039;&#039;&#039;Rückwärtsrichtung&#039;&#039;&#039; durch die Diode. &lt;br /&gt;
|-&lt;br /&gt;
| Reverse Recovery Charge ||  Q_rr || 60nC || Ladungsmenge, die während t_rr rückwärts durch die Diode fließt.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SOA Diagramm ====&lt;br /&gt;
&lt;br /&gt;
SOA-Diagramm (engl. &#039;&#039;&#039;S&#039;&#039;&#039;afe &#039;&#039;&#039;O&#039;&#039;&#039;perating &#039;&#039;&#039;A&#039;&#039;&#039;rea, sicherer Arbeitsbereich) beschreibt die zulässige Verlustleistung eines Transistors in Anhängigkeit des Drainstroms (I_D), der Drain-Source Spannung (U_DS) und der Pulsbreite. Als Beispiel sei hier der BUZ 11 genannt. Im nachfolgenden Diagramm ist das SOA-Diagrmm dargestellt. Wie ist es zu verstehen? Zunächst gibt es eine Grenze auf der linken Seite, die schräge, dunkelblaue Line. Diese wird durch den minimalen R_DS_ON festgelegt, hier wirkt der MOSFET wie ein ohmscher Widerstand. Mehr Strom kann bei einer bestimmten Spannung nicht fließen. Die zweite Grenzlinie ist ganz rechts die pinkfarbene Linie, sie stellt die maximale Sperrspannung des MOSFET dar. Die dritte Grenze ist der maximal zulässige Drainstrom, hier im Beispiel 120A, dargestellt durch die gelbe Linie. Die maximale Spannung zwischen Drain und Source sowie der Drainstrom sind abhängig von der Pulsbreite, mit welcher der MOSFET betrieben wird. Bei nur 2,5µs Pulsbreite (Rechteckimpuls) müssen die beiden Parameter sich innerhalb der Fläche bewegen, welche durch die dunkelblaue, gelbe und die pinkfarbene Line begrenzt wird. Im Extremfall dürfen 50V anliegen und 120A fließen, das sind satte 6kW Pulsleistung! Werden die Pulse breiter, so sinken die zulässigen Ströme und Spannungen, bei 1ms (dunkelblaue Linie bis zur braunen Linie, dann zur pinkfarbenen Linie) sind maximal noch 50V und 7A zulässig, also nur noch 350W. Die letzte Linie stellt den Fall für Gleichstrom (engl. &#039;&#039;&#039;D&#039;&#039;&#039;irect &#039;&#039;&#039;C&#039;&#039;&#039;urrent), also Dauerbelastung dar, hier sind bei 50V maximal 1,5A zulässig, was einer Dauerverlustleistung von 75W entspricht. MOSFETs, welche nur für Schaltbetrieb und nicht für [[#Linearbetrieb von MOSFETs | Linearbetrieb]] geeignet sind, haben keine Kennlinie für DC. Im normalen Schaltbetrieb liegt der Arbeitspunkt auf der linken Grenzlinie R_DS_ON_MIN.&lt;br /&gt;
&lt;br /&gt;
[[bild: SOA-BUZ11.png | thumb | 300px| SOA-Diagramm]]&lt;br /&gt;
&lt;br /&gt;
Bei der Anwendung des Diagramms gilt es einiges zu beachten. Die Pulsleistungen sind nur zulässig, wenn der MOSFET vorher kalt ist, sprich ca. 25°C Sperrschichttemperatur hat. War er vorher schon heiß, reduziert sich die zulässige Belastung deutlich. Ebenso dürfen die Pulse nicht zu schnell wiederholt werden, denn dann ist der MOSFET noch vom vorherigen Puls aufgeheizt. Im Fall von DC sind 75W Verlustleistung auch eher ein theoretischer Wert, welcher real nur schwer erreicht werden kann, wenn der MOSFET auf einem sehr großen [[Kühlkörper]] optimal montiert ist. Praktisch liegen die erreichbaren Werte eher bei der Hälfte.&lt;br /&gt;
&lt;br /&gt;
(Anm. Eigentlich müsste für die R_DS_ON Grenzlinie R = U / I der minimale R_DS_ON rauskommen, hier ~40mOhm, es kommen aber ~80mOhm raus. Die Ursache dafür ist unklar, möglicherweise liegt hier ein Sicherheitsfaktor zu grunde).&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Haupttypen und Gatespannungslevel ==&lt;br /&gt;
&lt;br /&gt;
===Unterschied N-Kanal / P-Kanal FET===&lt;br /&gt;
&lt;br /&gt;
Im Schaltsymbol werden die MOSFET-Typen meist durch die Pfeilrichtung in der Mitte des Symbols (eigentlich &amp;quot;Bulk&amp;quot;) vom oder zum Gate unterschieden.  Zeigt der Pfeil zum Gate hin, handelt es sich um einen N-Kanal-FET, zeigt der Pfeil vom Gate weg um einen P-Kanal FET.&lt;br /&gt;
&lt;br /&gt;
Der große Vorteil des N-Kanal FETs (Elektronenleitung) ist, daß er immer niederohmiger ist, als ein gleich großer P-Kanal FET (Löcherleitung). Daher sind P-Kanal Typen bei vergleichbaren Werten auch immer größer = teuerer da weniger Chips auf einem Wafer Platz haben.&lt;br /&gt;
&lt;br /&gt;
Beim N-Kanal FET muss die Gatespannung positiv gegenüber Source sein. Dabei wird der FET dann leitend, wenn die sogenannte &amp;quot;threshold voltage&amp;quot; (Schwellenspannung) erreicht wird. Eine typische Anwendung ist z.&amp;amp;nbsp;B. ein &#039;&#039;&#039;Low-Side Schalter&#039;&#039;&#039;: Source an GND, Drain an die Last, Ansteuerung des N-Kanal FETs mit 12V gleichbedeutend mit 12V ÜBER den Source = GND Potential.&lt;br /&gt;
 &lt;br /&gt;
Beim P-Kanal FET als HS-Schalter muss die Gatespannung negativer=niedriger als das Sourcepotential sein.Beispiel.&lt;br /&gt;
Beispiel:  &lt;br /&gt;
Lastspannung = 400V d.h. Source an 400V, Last zwischen Drain und GND, Ansteuerung des P-Kanal FETs mit 388V, also 12V UNTER dem Sourcepotential.&lt;br /&gt;
&lt;br /&gt;
Beim N-Kanal FET als HS-Schalter muss die Gatespannung positver=höher als das Sourcepotential sein.&lt;br /&gt;
Beispiel:&lt;br /&gt;
Lastspannung = 400V d.h. Last an 400V, Drain an die Last, Source an GND, Ansteuerung des N-Kanal FETs mit 412V, also 12V ÜBER dem Sourcepotential.&lt;br /&gt;
In diesem Fall ist aber eine zusätzliche Spannungsquelle erforderlich, denn der FET wird mit einer Spannung über der Lastspannung eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weblinks&#039;&#039;&#039;&lt;br /&gt;
* [http://www.eetimes.com/General/DisplayPrintViewContent?contentItemId=4009943 A primer on high-side FET load switches (Part 1 of 2)], Qi Deng, Senior Product Marketing Manager, Mixed-Signal Products, Micrel, Inc., 5/3/2007 4:14 PM EDT, www.eetimes.com&lt;br /&gt;
* [http://www.eetimes.com/General/DisplayPrintViewContent?contentItemId=4009944 A primer on high-side FET load switches (Part 2 of 2)], Qi Deng, Senior Product Marketing Manager, Mixed-Signal Products. Micrel, Inc., 5/7/2007 1:36 PM EDT, www.eetimes.com&lt;br /&gt;
* [http://www.vishay.com/docs/70611/70611.pdf AN804 P-Channel MOSFETs, the Best Choice for High-Side Switching (PDF)] von Vishay Siliconix&lt;br /&gt;
&lt;br /&gt;
===Unterschied Logic-Level / &amp;quot;Normal&amp;quot;-Level===&lt;br /&gt;
&lt;br /&gt;
Den meisten FETs ist gemein, daß sie mit einer Spannung von 10..15V angesteuert werden müssen, um den minimalen Einschaltwiderstand zu erreichen. Diese FETs lassen sich nicht ohne weiteres mit einem CMOS-Pegel von 5V ansteuern. Es gibt jedoch für diesen Anwendungsfall sogenannte &amp;quot;Logic Level&amp;quot; (LL) FETs, die schon bei einer Gatespannung von etwa 4,5V voll durchgesteuert sind. Einige Kleinsignal-FETs sind schon ab ca. 1,2V voll durchgesteuert.&lt;br /&gt;
&lt;br /&gt;
== Beispiel zur Bauteiledimensionierung ==&lt;br /&gt;
&lt;br /&gt;
=== Spannungsfestigkeit ===&lt;br /&gt;
&lt;br /&gt;
Die höchste vorkommende Betriebsspannung + Abschaltüberspannung soll kleiner als ca. 80% der Spannungsfestigkeit des Bauteiles sein. &lt;br /&gt;
&lt;br /&gt;
Achtung: Zwischen dem je nach Anwendungsfall erforderlichen Pufferkondensator und dem FET wird es immer eine parasitäre Induktivität geben.&lt;br /&gt;
Abhängig von Schaltgeschwindigkeit und Induktivität wird im Schaltmoment eine mehr oder weniger große Übrspannungsspitze produziert. Dieser Peak&lt;br /&gt;
addiert sich auf die aktuelle Versorgungsspannung.&lt;br /&gt;
&lt;br /&gt;
Überschlagsrechnung als Beispiel:&lt;br /&gt;
* Schaltgeschwindigkeit:  dI/dt = -100A/µs (= Abschalten von 5A innerhalb 50ns),&lt;br /&gt;
* Induktivität:   L = 1µH (~ 1 m loses, ungebündeltes Kabel)&lt;br /&gt;
* dU=-L*dI/dt = -1µH * (-100A / 1µs) = 100V&lt;br /&gt;
&lt;br /&gt;
Dies bedeutet, daß an der &amp;quot;Induktivität&amp;quot; zwischen Transistor und Kondensator - Aufgrund von Selbstinduktion im Schaltmoment - ein Überspannungspuls von ca. 100V entsteht, der auf die Betriebsspannung aufzuschlagen ist.&lt;br /&gt;
&lt;br /&gt;
=== Stromtragfähigkeit ===&lt;br /&gt;
&lt;br /&gt;
In jedem Datenblatt ist eine Stromtragfähigkeit bei 25°C, und meist noch bei einer höheren Temperatur z.B. 125°C, 150°C oder 175°C Kühlfahnentemperatur angegeben. Dieser Wert ist als ERSTE Entscheidungsgrundlage ausreichend, aber aus der theoretisch abführbaren Verlustleistung errechnet, und&lt;br /&gt;
* dient zum qualitativen Vergleich von Transistoren bezüglich ihres R_ds(on) und ihres Wärmewiderstands.&lt;br /&gt;
* ist für die Dimensionierung einer Schaltung nur als Richtwert zu interpretieren. &lt;br /&gt;
* ist ohne Schaltverluste genannt, und daher nur für einen Schaltbetrieb von wenigen Hz gültig. Außerdem wird ein annähernd idealer Kühlkörper unterstellt, der trotz der Verlustleistung das Gehäuse des Transistors auf der angegebenen Temperatur halten kann.&lt;br /&gt;
* entbindet einen nicht davon den Kopf einzuschalten... siehe die nachfolgenden Zeilen.&lt;br /&gt;
* Liegt der Strom für den die Schaltung entwickelt wird mit ca. 10..20% Abstand unter dem Datenblattwert von 125°C ist dieses Bauteil vermutlich verwendbar (siehe Detailberechnungen unten !).   &lt;br /&gt;
* Ist der benötigte Strom im Bereich oder größer als der zulässige bei 125°C sollte entweder ein anderer Typ eingesetzt oder mehrere FETs parallelgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Verlustleistung ===&lt;br /&gt;
&lt;br /&gt;
Hier wird eine Näherung für eine getaktete Anwendung betrachtet. In einem Transistor treten sowohl beim Ein- und Ausschalten, als auch während der Einschaltphase Verluste im Bauteil auf. Diese Verluste führen zu einer Bauteilerwärmung. Die dabei entstehende Temperatur darf die maximal zulässige Bauteiletemperatur nie überschreiten. Bei den ersten Projekten ist zu empfehlen eine berechnete Chiptemperatur von ca. 125°C nicht zu überschreiten. Fast alle aktuell verfügbaren FETs nennen im Datenblatt eine Temperatur von 175°C als ihre maximale Chiptemperatur.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Beispiel&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter || Symbol ||Wert&lt;br /&gt;
|-&lt;br /&gt;
| Betriebsspannung || U&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; || 70 V&lt;br /&gt;
|-&lt;br /&gt;
| Nennstrom || I&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt; || 30 A&lt;br /&gt;
|-&lt;br /&gt;
| Drain-Source Widerstand bei einer Chiptemperatur von 125°C und einer Gatespannung von 10V || R&amp;lt;sub&amp;gt;DS&amp;lt;sub&amp;gt;on&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 17 mΩ&lt;br /&gt;
|-&lt;br /&gt;
| on-Zeit || t&amp;lt;sub&amp;gt;on&amp;lt;/sub&amp;gt; || 150 µs&lt;br /&gt;
|-&lt;br /&gt;
| Schaltfrequenz || ƒ&amp;lt;sub&amp;gt;schalt&amp;lt;/sub&amp;gt; || 5 kHz, (T = 200µs)&lt;br /&gt;
|-&lt;br /&gt;
| Einschaltzeit (risetime) || t&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt; || 500 ns&lt;br /&gt;
|-&lt;br /&gt;
| Ausschaltzeit (falltime) || t&amp;lt;sub&amp;gt;ƒ&amp;lt;/sub&amp;gt; || 800 ns &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Leitungsverluste ====&lt;br /&gt;
&lt;br /&gt;
Während der FET bei [[PWM]]-Ansteuerung eingeschaltet ist, erzeugt er Verlustleitung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_\text{ON}&lt;br /&gt;
 = I_\mathrm{N}^2 \cdot R_\mathrm{DS_\mathrm{ON}} \cdot \frac{t_\mathrm{ON}}{T}&lt;br /&gt;
 = 30A^2 \cdot 17m\Omega  \cdot \frac{150\mu s}{200\mu s} = 11{,}5W&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Schaltverluste ====&lt;br /&gt;
&lt;br /&gt;
Vereinfachter Ansatz.&lt;br /&gt;
&lt;br /&gt;
Einschalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
P_\mathrm{SW_r}&lt;br /&gt;
&amp;amp;= \tfrac14 \cdot U_N \cdot I_N \cdot \frac{t_r}{T} \\&lt;br /&gt;
&amp;amp;= \tfrac14 \cdot 70V \cdot 30A \cdot \frac{500ns}{200\mu s}=1{,}3W&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausschalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
P_\mathrm{SW_f} &lt;br /&gt;
&amp;amp;=\tfrac14 \cdot U_N \cdot I_N \cdot \frac{t_f}{T}\\&lt;br /&gt;
&amp;amp;=\tfrac14 \cdot 70V \cdot 30A \cdot \frac{800ns}{200\mu s}=2{,}1W&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ und genauer kann man rechnen, wenn die Ein- Ausschaltenergie im Datenblatt angegeben ist. Aber Achtung! Die  Randbedingungen unter denen die genannte Energie ermittelt wurde, müssen genau so zutreffen.&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
P_{SW_f} = f_{schalt} \cdot E_{ON}&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
P_{SW_r} = f_{schalt} \cdot E_{OFF}&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gesamtverlustleistung beträgt also in etwa 15W.&lt;br /&gt;
&lt;br /&gt;
Damit muß ein entsprechender [[Kühlkörper]] ausgelegt und die Chiptemperatur berechnet werden. z.&amp;amp;nbsp;B.:&lt;br /&gt;
* Kühlkörper mit einem R_th von 0,2K/W&lt;br /&gt;
* max. Umgebungstemperatur +60°C&lt;br /&gt;
* R_th &amp;quot;junction-case&amp;quot; des FETs 0,8K/W&lt;br /&gt;
* R_th der Wärmeleitfolie zwischen FET und Kühlkörper ca. 2,0K/W&lt;br /&gt;
* R_th gesamt: 3,0K/W &amp;lt;br&amp;gt;&lt;br /&gt;
* Bei einer Verlustleistung von 18W und einer Umgebungstemperatur von 60°C hat der Chip eine Temperatur von ca. 18W * 3,0K/W +60°C = 114°C. ==&amp;gt; o.k.!&lt;br /&gt;
&lt;br /&gt;
Unter Berücksichtigung der Tatsache, daß hier viele Vereinfachungen vorgenommen, und die Art der Last nicht beachtet wurde ist es sinnvoll, einen gewissen Sicherheitsabstand zu den zulässigen Maximalwerten einzuhalten. Daher ist es empfehlenswert, die Chiptemperatur auf ca. 125°C zu beschränken. &lt;br /&gt;
&lt;br /&gt;
Des Weiteren ist hier die parasitäre Diode im FET nicht berücksichtigt.&lt;br /&gt;
Wenn während der &amp;quot;off&amp;quot; Zeit ein Strom über die Diode fließt (Reverse recovery current oder Freilaufstrom), muß die dadurch &#039;&#039;&#039;zusätzlich&#039;&#039;&#039; entstehende Verlustleistung in die obige Berechnung der maximalen Chiptemperatur mit einfließen.&lt;br /&gt;
&lt;br /&gt;
==Treiberleistung==&lt;br /&gt;
&lt;br /&gt;
Auch wenn der MOSFET ein spannungsgesteuertes Bauelement ist, muss trotzdem bei jedem Einschalten und bei jedem Ausschalten die Gatekapazität umgeladen werden. Bei einigen wenigen Leistungs-FET muss sogar teilweise mit negativer Spannung am Gate gearbeitet werden, um eine vollständige Sperrung zu erreichen.&lt;br /&gt;
Diese Umladung muss möglichst schnell erfolgen, um die Verluste im FET während der Umschaltphase zu minimieren. Dazu findet ein [[Mosfet-Übersicht#Mosfet-Treiber|Mosfet-Treiber]] Verwendung. Hier eine detaillierte Beschreibung zum [[Treiber]].&lt;br /&gt;
&lt;br /&gt;
Da die Gatekapazität nicht direkt im Datenblatt enthalten ist kann man sich mit der Eingangskapazität Ciss behelfen. Im Arbeitspunkt ist die Gatekapazität ungefähr 5x größer als der im Datenblatt für Ciss angegebene Wert. &lt;br /&gt;
Daher berechnet sich die Treiberleistung wie folgt: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_\text{Treiber} = C \cdot U^2 \cdot f = 5 \cdot C_\text{iss} \cdot U_\text{Gate}^2 \cdot f_\text{schalt}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.Beispiel, kleine MOSFET-Steuerung mit niedriger Leistung und Frequenz.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_\text{treiber} = 5 \cdot 4{,}8\,\text{nF} \cdot 15\,\text{V}^2 \cdot 10\,\text{kHz} = 54\,\text{mW}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.Beispiel, sehr große MOSFET-Steuerung für Induktionsheizung mit sehr hoher Leistung und Frequenz.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_\text{treiber} = 5 \cdot 24\,\text{nF} \cdot 15\,\text{V}^2 \cdot 250\,\text{kHz} = 6{,}75\,\text{W}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aber Achtung, so ein MOSFET-Treiber hat auch einen Eigenverbrauch, der leicht zwischen 0,5 und 1 W liegen kann.&lt;br /&gt;
&lt;br /&gt;
Bei niedrigen PWM-Frequenzen kann man Logic Level MOSFETs auch direkt per CMOS-Ausgang ansteuern, z.B. mit einem [[AVR]], wie in diesem [http://www.mikrocontroller.net/topic/246449#2519459 Forumsbeitrag] zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
== Low- und High-Side ==&lt;br /&gt;
&lt;br /&gt;
Definition LS- und HS:&lt;br /&gt;
 &lt;br /&gt;
;Low-Side: Schalter, der FET schaltet eine Last gegen GND &amp;amp;ndash; auch als LS-Schalter bezeichnet.&lt;br /&gt;
;High-Side: Schalter, der FET schaltet eine Last an die Versorgungsspannung – auch als HS-Schalter bezeichnet.&lt;br /&gt;
&lt;br /&gt;
Anregungen oder Fragen auch gerne per Email an [http://www.mikrocontroller.net/user/show/powerfreak Powerfreak]. Dieser Artikel kann dadurch regelmäßig erweitert und ggf. durch ein FAQ ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
== Linearbetrieb von MOSFETs ==&lt;br /&gt;
&lt;br /&gt;
Der Großteil der Anwendungen nutzt MOSFETs als Schalter, d.h. der MOSFET ist entweder voll gesperrt oder voll durchgesteuert. Dafür gelten auch all die Hinweise in diesem Artikel. In bestimmten Anwendungen werden MOSFETs aber auch im Linearbetrieb eingesetzt, z.B in linearen Endstufen für Audio, Video, elektronischen Lasten und Stromquellen. Hier muss man einiges beachten. Ein verbreiteter Irrtum besteht darin zu glauben, MOSFETs könne man im Linearbetrieb einfach parallel schalten, weil der positive Temperaturkoeffizient von &amp;lt;math&amp;gt;R_{DS(ON)}&amp;lt;/math&amp;gt; eine Symmetrierung bewirkt, ähnlich den Emitterwiderständen bei parallelgeschalteten Bipolartransistoren. Das ist falsch! Im Linearbetrieb spielt der Temperaturkoeffizient von &amp;lt;math&amp;gt;R_{DS(ON)}&amp;lt;/math&amp;gt; keine Rolle, weil der MOSFET selten bis nie komplett durchgesteuert ist. Eben darum ist beim Linearbetrieb der minimale &amp;lt;math&amp;gt;R_{DS(ON)}&amp;lt;/math&amp;gt; in den meisten Fällen unwichtig und man kann auch eher hochohmige, ältere MOSFETs verwenden, wie z.B. den BUZ11.&lt;br /&gt;
&lt;br /&gt;
Hier wirkt vielmehr der negative Temperaturkoeffizient (TK) der Thresholdspannung &amp;lt;math&amp;gt;U_{GS(thr)}&amp;lt;/math&amp;gt;, vergleichbar dem negativen TK der Basis-Emitter-Spannung von Bipolartransistoren. D.h. mit steigender Temperatur und konstanter Gate-Source-Spannung steigt der Stromfluss der Drain-Source Strecke. In einer Parallelschaltung von MOSFETs würde dies bedeuten, dass der MOSFET mit dem geringfügig größeren Drainstrom (Fertigungstoleranzen) wärmer wird, was zu einem weiter steigenden Drainstrom und damit noch mehr Wärme führt. Damit ist die Schaltung thermisch instabil und würde zum Durchbrennen der MOSFETs führen, einer nach dem Anderen. &lt;br /&gt;
&lt;br /&gt;
Um das zu verhindern muss man relativ große Ausgleichswiderstände in die Source-Leitung der einzelnen MOSFETs schalten, um diese Drift zu kompensieren. Dadurch verschlechtert sich natürlich der Wirkungsgrad des Verstärkers. MOSFETs haben einen TK von typisch -5mV/K für &amp;lt;math&amp;gt;U_{GS(thr)}&amp;lt;/math&amp;gt;, das ist mehr als das doppelte von Bipolartransistoren mit typisch -2mV/K, weshalb die Symmetrierungswiderstände mehr als doppelt so groß sein müssen. Weiterhin muss man beachten, dass die Toleranzen von &amp;lt;math&amp;gt;U_{GS(thr)}&amp;lt;/math&amp;gt; sehr groß sind, im Bereich von Volt! Das kann man sinnvoll nicht mehr mit Gatewiderständen symmetrieren, hier muss man die MOSFETs ausmessen und Gruppen mit geringen Toleranzen in einer Schaltung verwenden (engl. matching). &lt;br /&gt;
&lt;br /&gt;
Eine andere Möglichkeit ist die getrennte Ansteuerung der einzelnen MOSFETs, das wird oft in elektronischen Lasten bzw. [[Konstantstromquelle#Konstantstromquelle mit Operationsverstärker und Transistor | Konstantstromquellen]] gemacht. Hier treten keine zusätzlichen Verluste auf und der Mehraufwand in der Ansteuerung ist meist unkritisch.&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss man beachten, dass viele der heutigen HochleistungsMOSFETs intern eine Parallelschaltung vieler kleiner MOSFET-Zellen (z.B. sogenannte Trench-FET) sind, und somit oft für den Linearbetrieb ungeeignet sind. Denn auch dort können einzelne Zellen überhitzen und durchbrennen (Hot Spot). Ob ein MOSFET für den Linearbetrieb tauglich ist steht manchmal im Datenblatt, oft aber eher nicht, eben weil die meisten MOSFETs als Schalter entwickelt und gebaut sind. Typische Vertreter für Linearbetrieb findet man in der [[MOSFET-Übersicht]]. Ein wichtiges Indiz für Linearbetrieb ist eine Kurve für DC im [[#SOA_Diagramm | SOA-Diagramm]]. Meist geht es dort nur bis 10ms, DC fehlt, eben weil DC (engl. &#039;&#039;&#039;D&#039;&#039;&#039;irect &#039;&#039;&#039;C&#039;&#039;&#039;urrent = Gleichstrom = Linearbetrieb) nicht zulässig ist. Manchmal hat der Hersteller auch &amp;quot;vergessen&amp;quot;, die Kennlinie für DC mit reinzuschreiben, wie z.B. bei [http://www.irf.com/product-info/hi-rel/alerts/fv5-p-09-01-A.pdf IRF], wie in diesem [http://www.mikrocontroller.net/topic/291760#3106758 Beitrag] zu erfahren ist.&lt;br /&gt;
Ein recht gutes Indiz dafür, ob ein FET für den Linearbetrieb taugt, ist die Vorwärtssteilheit. Die kennzeichnet die die Abhängigkeit des Drainstromes von der Ansteuerung am Gate als &amp;lt;math&amp;gt;S = \Delta i_d/\Delta u_{gs}&amp;lt;/math&amp;gt;. Moderne Trench-FET erreichen heute Steilheiten im dreistelligen Bereich und sind für Linearanwendungen völlig unbrauchbar. Zum Vergleich: Der BUZ11 kommt mit gerade einmal 4 bis 5 Siemens daher.&lt;br /&gt;
&lt;br /&gt;
In diesem Beitrag wird die DC-Linie im SOA-Diagramm noch genauer erklärt: [http://www.mikrocontroller.net/topic/319961#3473567 Re: MOSFET Linearbetrieb möglich?]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Leistungselektronik]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[IGBT]]&lt;br /&gt;
* [[TRIAC]]&lt;br /&gt;
* [[Kühlkörper]] &lt;br /&gt;
* [[Zwischenkreiskapazität]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Snippets#Wie_schlie.C3.9Fe_ich_einen_MOSFET_an_einen_Mikrocontroller_an.3F|Wie schließe ich einen Mosfet an einen Mikrocontroller an?]]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168218#1609684 Forumsbeitrag]: MOSFETs im Linearbetrieb&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/186785#new Forumsbeitrag]: nochmal MOSFETs im Linearbetrieb&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319961#3473567 Forumsbeitrag]: sehr ausführlicher Forumsbeitrag über MOSFETs im Linearbetrieb. Berücksichtigt auch den Spirito-Effekt.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/143324#new Forumsbeitrag]: Über eine elektronische Last, sehr lang&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/246449#2519459 Forumsbeitrag]: Logic Level MOSFETs direkt mit einem [[AVR]] treiben.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267254#2787855 Forumsbeitrag]: MOSFETs im Linearbetrieb, Laborerfahrungen&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267254#2787945 Forumsbeitrag]: MOSFETs für Linearbetrieb&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.elektronikinfo.de/strom/feldeffekttransistoren.htm Feldeffekttransistoren bei elektronikinfo.de]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/bau/0207011.htm FET im ELKO]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/bau/0510161.htm MOSFET im ELKO]&lt;br /&gt;
* [http://www.sprut.de/electronic/switch/nkanal/nkanal.html MOSFET bei sprut.de]&lt;br /&gt;
* [http://sound.westhost.com/articles/hexfet.htm#51 MOSFETs in Audioendstufen, engl.]&lt;br /&gt;
* [http://irf.custhelp.com/cgi-bin/irf.cfg/php/enduser/std_adp.php?p_faqid=214&amp;amp;p_created=1019728945&amp;amp;p_sid=pt9ITiCj&amp;amp;p_accessibility=0&amp;amp;p_redirect=&amp;amp;p_lva=&amp;amp;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9MTQsMTQmcF9wcm9kcz0mcF9jYXRzPSZwX3B2PSZwX2N2PSZwX3BhZ2U9MSZwX3NlYXJjaF90ZXh0PWxpbmVhcg**&amp;amp;p_li=&amp;amp;p_topview=1 FAQ Answer ID 214 bei IRF zum Linearbetrieb]&lt;br /&gt;
* [http://www.nxp.com/documents/application_note/AN11158.pdf AN11158 - Understanding power MOSFET data sheet parameters] von NXP (PDF)&lt;br /&gt;
&lt;br /&gt;
[[Category:Bauteile]] [[Kategorie:Leistungselektronik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79504</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79504"/>
		<updated>2013-11-08T22:25:46Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: SO-Footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== minimale Schriftgröße ==&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/attachment/196856/ucruler.pdf ausdrucken und die eigenen Augen testen.&lt;br /&gt;
&lt;br /&gt;
Dann bitte eintragen, welche Größe gerade noch lesbar ist. Die normale Schrift wird eins größer werden, aber falls mal wirklich kein Platz mehr sein sollte würde ich darauf zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1,8 |&lt;br /&gt;
1,6 |&lt;br /&gt;
1,4 |&lt;br /&gt;
1,2 |&lt;br /&gt;
1,0 | ++&lt;br /&gt;
0,8 |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
* http://www.linear.com/designtools/packaging/&lt;br /&gt;
* http://ww1.microchip.com/downloads/en/PackagingSpec/00049AR.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0603&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK http://www.fairchildsemi.com/dwg/TO/TO252A03.pdf&lt;br /&gt;
* TO-263 / D2PAK http://www.fairchildsemi.com/dwg/TO/TO263A02.pdf&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC http://www.fairchildsemi.com/dwg/DO/DO214AC.pdf&lt;br /&gt;
* SMB / DO-214AA http://www.fairchildsemi.com/dwg/DO/DO214AA.pdf&lt;br /&gt;
* SMC / DO-214AB http://www.fairchildsemi.com/dwg/DO/DO214AB.pdf&lt;br /&gt;
* Melf http://www.cdil.com/package/do213ab_dwng.pdf&lt;br /&gt;
* MiniMelf http://www.cdil.com/package/sod_80c.pdf&lt;br /&gt;
* MicroMelf http://www.vishay.com/docs/20003/smm0102.pdf&lt;br /&gt;
* PLCC-4 / 3528 http://catalog.osram-os.com/media/_en/Graphics/00042269_0.pdf&lt;br /&gt;
* PLCC-6 / 5050 http://ledversand24.de/media/pdf/ws2812preliminary51337f1c83131.pdf&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24, 3.9mm-Body, ein Footprint, aber mit Bestückungsdruck-Linien die kleineren Varianten für 8,14,16,20,24 Pins anzeichen, Pinzahl ranschreiben&lt;br /&gt;
* SOIC-24, 7.5mm-Body, ein Footprint, aber mit Bestückungsdruck-Linien die kleineren Varianten für 8,14,16,20,24 Pins anzeichen, Pinzahl ranschreiben&lt;br /&gt;
Diese beiden SOIC-Breiten wenn möglich in einem Footprint zusammenfassen, also z.B. die linken Pins gemeinsam verwenden. Die beiden&lt;br /&gt;
Breiten dann über Bestückungsdruck-Linien kennzeichnen.&lt;br /&gt;
&lt;br /&gt;
* SSOP-24, 5,3mm-Body, 0,65mm Pitch. Das ist die gängigste Variante, es gibt aber leider auch einige Abweichler mit anderem Pitch und Bodybreite die sich auch SSOP nennen :(&lt;br /&gt;
* TSSOP-28, 4,4mm-Body, 0,65mm Pitch&lt;br /&gt;
Auch bei diesen beiden: ein Footprint, aber mit Bestückungsdruck-Linien die kleineren Varianten für 8,14,16,20,24,28 Pins anzeichen, Pinzahl ranschreiben&lt;br /&gt;
&lt;br /&gt;
Für die Maße: http://www.microchip.com/stellent/groups/techpub_sg/documents/packagingspec/en012702.pdf&lt;br /&gt;
&lt;br /&gt;
Wenn noch Platz:&lt;br /&gt;
* TQFP32, 0.8mm Pitch http://www.microchip.com/stellent/groups/techpub_sg/documents/packagingspec/en012702.pdf&lt;br /&gt;
* TQFP48 / LQFP48, 0.5mm Pitch http://www.nxp.com/documents/outline_drawing/sot313-2_po.pdf&lt;br /&gt;
* QFN32, 0.5mm Pitch http://www.linear.com/docs/38749&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79502</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79502"/>
		<updated>2013-11-08T21:45:21Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: wahl minimale schriftgröße&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== minimale Schriftgröße ==&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/attachment/196856/ucruler.pdf ausdrucken und die eigenen Augen testen.&lt;br /&gt;
&lt;br /&gt;
Dann bitte eintragen, welche Größe gerade noch lesbar ist. Die normale Schrift wird eins größer werden, aber falls mal wirklich kein Platz mehr sein sollte würde ich darauf zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1,8 |&lt;br /&gt;
1,6 |&lt;br /&gt;
1,4 |&lt;br /&gt;
1,2 |&lt;br /&gt;
1,0 | ++&lt;br /&gt;
0,8 |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
* http://www.linear.com/designtools/packaging/&lt;br /&gt;
* http://ww1.microchip.com/downloads/en/PackagingSpec/00049AR.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0603&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK http://www.fairchildsemi.com/dwg/TO/TO252A03.pdf&lt;br /&gt;
* TO-263 / D2PAK http://www.fairchildsemi.com/dwg/TO/TO263A02.pdf&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC http://www.fairchildsemi.com/dwg/DO/DO214AC.pdf&lt;br /&gt;
* SMB / DO-214AA http://www.fairchildsemi.com/dwg/DO/DO214AA.pdf&lt;br /&gt;
* SMC / DO-214AB http://www.fairchildsemi.com/dwg/DO/DO214AB.pdf&lt;br /&gt;
* Melf http://www.cdil.com/package/do213ab_dwng.pdf&lt;br /&gt;
* MiniMelf http://www.cdil.com/package/sod_80c.pdf&lt;br /&gt;
* MicroMelf http://www.vishay.com/docs/20003/smm0102.pdf&lt;br /&gt;
* PLCC-4 / 3528 http://catalog.osram-os.com/media/_en/Graphics/00042269_0.pdf&lt;br /&gt;
* PLCC-6 / 5050 http://ledversand24.de/media/pdf/ws2812preliminary51337f1c83131.pdf&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch http://ww1.microchip.com/downloads/en/PackagingSpec/00049AR.pdf, Seite 131&lt;br /&gt;
* TQFP48 / LQFP48, 0.5mm Pitch http://www.nxp.com/documents/outline_drawing/sot313-2_po.pdf&lt;br /&gt;
* QFN32, 0.5mm Pitch http://www.linear.com/docs/38749&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79498</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79498"/>
		<updated>2013-11-08T21:18:42Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: mehr footprint-links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
* http://www.linear.com/designtools/packaging/&lt;br /&gt;
* http://ww1.microchip.com/downloads/en/PackagingSpec/00049AR.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK http://www.fairchildsemi.com/dwg/TO/TO252A03.pdf&lt;br /&gt;
* TO-263 / D2PAK http://www.fairchildsemi.com/dwg/TO/TO263A02.pdf&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC http://www.fairchildsemi.com/dwg/DO/DO214AC.pdf&lt;br /&gt;
* SMB / DO-214AA http://www.fairchildsemi.com/dwg/DO/DO214AA.pdf&lt;br /&gt;
* SMC / DO-214AB http://www.fairchildsemi.com/dwg/DO/DO214AB.pdf&lt;br /&gt;
* Melf http://www.cdil.com/package/do213ab_dwng.pdf&lt;br /&gt;
* MiniMelf http://www.cdil.com/package/sod_80c.pdf&lt;br /&gt;
* MicroMelf http://www.vishay.com/docs/20003/smm0102.pdf&lt;br /&gt;
* PLCC-4 / 3528 http://catalog.osram-os.com/media/_en/Graphics/00042269_0.pdf&lt;br /&gt;
* PLCC-6 / 5050 http://ledversand24.de/media/pdf/ws2812preliminary51337f1c83131.pdf&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch http://ww1.microchip.com/downloads/en/PackagingSpec/00049AR.pdf, Seite 131&lt;br /&gt;
* TQFP48 / LQFP48, 0.5mm Pitch http://www.nxp.com/documents/outline_drawing/sot313-2_po.pdf&lt;br /&gt;
* QFN32, 0.5mm Pitch http://www.linear.com/docs/38749&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79497</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79497"/>
		<updated>2013-11-08T21:03:57Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: LED-Footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC http://www.fairchildsemi.com/dwg/DO/DO214AC.pdf&lt;br /&gt;
* SMB / DO-214AA http://www.fairchildsemi.com/dwg/DO/DO214AA.pdf&lt;br /&gt;
* SMC / DO-214AB http://www.fairchildsemi.com/dwg/DO/DO214AB.pdf&lt;br /&gt;
* Melf http://www.cdil.com/package/do213ab_dwng.pdf&lt;br /&gt;
* MiniMelf http://www.cdil.com/package/sod_80c.pdf&lt;br /&gt;
* MicroMelf http://www.vishay.com/docs/20003/smm0102.pdf&lt;br /&gt;
* PLCC-4 / 3528 http://catalog.osram-os.com/media/_en/Graphics/00042269_0.pdf&lt;br /&gt;
* PLCC-6 / 5050 http://ledversand24.de/media/pdf/ws2812preliminary51337f1c83131.pdf&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79496</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79496"/>
		<updated>2013-11-08T20:53:58Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Footprints verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC http://www.fairchildsemi.com/dwg/DO/DO214AC.pdf&lt;br /&gt;
* SMB / DO-214AA http://www.fairchildsemi.com/dwg/DO/DO214AA.pdf&lt;br /&gt;
* SMC / DO-214AB http://www.fairchildsemi.com/dwg/DO/DO214AB.pdf&lt;br /&gt;
* Melf http://www.cdil.com/package/do213ab_dwng.pdf&lt;br /&gt;
* MiniMelf http://www.cdil.com/package/sod_80c.pdf&lt;br /&gt;
* MicroMelf http://www.vishay.com/docs/20003/smm0102.pdf&lt;br /&gt;
* PLCC-4 / 3528&lt;br /&gt;
* PLCC-6 / 5050&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79495</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79495"/>
		<updated>2013-11-08T20:45:40Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: link verbessert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* MicroMelf&lt;br /&gt;
* PLCC-4 / 3528&lt;br /&gt;
* PLCC-6 / 5050&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79494</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79494"/>
		<updated>2013-11-08T20:44:02Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Aufteilung der Footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 32 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.5mm oder 0.8mm FR4 &#039;&#039;&#039;1-Layer&#039;&#039;&#039; 35µ (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück oder vielfaches von 3 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++++++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |++++++++&lt;br /&gt;
blau    |++++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| +++++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| --------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Transistor-Schaltungssymbole &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Aufdruck von Transistor-Schaltungssymbolen (bipolar/FET) und THT-LEDs, [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg siehe hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Pin-Beschriftung für einige Footprints &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Einige Footprints (z.B. TO-92, SOT-23 etc.) sollten Beschriftungen für BCE/GDS für gängige Transistortypen bekommen, siehe [http://dmohankumar.files.wordpress.com/2011/05/table-showing-the-pins-of-common-transistors.pdf hier] und [http://www.radiomuseum.org/forum/transistor_connections.html hier]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabelschablone&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ähnlich dem [http://www.adafruit.com/index.php?main_page=popup_image_additional&amp;amp;pID=1554&amp;amp;pic=1&amp;amp;products_image_large_additional=images/large/1554bottom_LRG.jpg Adafruit Ruler], aber als Tabelle in AWG und mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* http://www.fairchildsemi.com/package/&lt;br /&gt;
* http://www.maximintegrated.com/design/packaging/&lt;br /&gt;
* http://www.infineon.com/cms/de/product/technology/packages/index.html&lt;br /&gt;
* http://www.nxp.com/packages&lt;br /&gt;
* http://www.topline.tv/Drawings/PDF/QFP/TQFP_Library.pdf&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.adafruit.com/blog/2013/10/11/new-product-adafruit-pcb-ruler-6/ Adafruit Ruler].&lt;br /&gt;
&lt;br /&gt;
http://www.adafruit.com/images/large/1554bottom_LRG.jpg&lt;br /&gt;
&lt;br /&gt;
=== Widerstände &amp;amp; Kondensatoren ===&lt;br /&gt;
Maße siehe z.B. [http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf]&lt;br /&gt;
&lt;br /&gt;
* 0201 (wenn der Fertiger des Lineal das kann...)&lt;br /&gt;
* 0402&lt;br /&gt;
* 0805&lt;br /&gt;
* 1206&lt;br /&gt;
* 1210&lt;br /&gt;
* 1812 (wenn noch Platz ist)&lt;br /&gt;
* 2010 (wenn noch Platz ist)&lt;br /&gt;
* 2512 (wenn noch Platz ist)&lt;br /&gt;
&lt;br /&gt;
=== Transistoren &amp;amp; ICs ===&lt;br /&gt;
&lt;br /&gt;
* ✓ SC-70&lt;br /&gt;
* ✓ SOT-23&lt;br /&gt;
* ✓ SOT-23-6&lt;br /&gt;
* ✓ SOT-89&lt;br /&gt;
* ✓ SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
&lt;br /&gt;
=== Dioden &amp;amp; LEDs ===&lt;br /&gt;
&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* MicroMelf&lt;br /&gt;
* PLCC-4 / 3528&lt;br /&gt;
* PLCC-6 / 5050&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 3  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
 5  D. Braun (garag)&lt;br /&gt;
 5  Michael.S. (michael0307)&lt;br /&gt;
 5  Didi S. (kokisan2000)&lt;br /&gt;
 5  Thomas L. (ics1702)&lt;br /&gt;
 5  Sebastian Engel (s-engel)&lt;br /&gt;
 5  Peter Sieg (petersieg)&lt;br /&gt;
 5  Martin S. (martin_s91)&lt;br /&gt;
 5  Manuel Steiner (steinerhippo)&lt;br /&gt;
 5  Nico B. (vegetico)&lt;br /&gt;
 5  Axel P. (axel_p)&lt;br /&gt;
 5  Mh. M. (mhm)&lt;br /&gt;
 5  Friedrich K (*)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------&lt;br /&gt;
405 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79393</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79393"/>
		<updated>2013-11-06T21:23:17Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: LED-Footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++&lt;br /&gt;
weiß    |&lt;br /&gt;
rot     |+++++&lt;br /&gt;
blau    |++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* PLCC-4 / 3528&lt;br /&gt;
* PLCC-6 / 5050&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79392</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79392"/>
		<updated>2013-11-06T21:00:37Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: mehr so-footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++&lt;br /&gt;
weiß    |&lt;br /&gt;
rot     |+++++&lt;br /&gt;
blau    |++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79391</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79391"/>
		<updated>2013-11-06T20:35:36Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: /* Vorschläge für Footprints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++&lt;br /&gt;
weiß    |&lt;br /&gt;
rot     |+++++&lt;br /&gt;
blau    |++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* SO-8&lt;br /&gt;
* TSSOP-8&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79390</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79390"/>
		<updated>2013-11-06T20:33:55Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: mehr Footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++&lt;br /&gt;
weiß    |&lt;br /&gt;
rot     |+++++&lt;br /&gt;
blau    |++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* SO-8&lt;br /&gt;
* TSSOP-8&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79389</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79389"/>
		<updated>2013-11-06T20:27:59Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Vorschläge für Footprints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++&lt;br /&gt;
weiß    |&lt;br /&gt;
rot     |+++++&lt;br /&gt;
blau    |++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* SO-8&lt;br /&gt;
* TSSOP-8&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79388</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79388"/>
		<updated>2013-11-06T20:16:49Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: präferenzen gewählt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |+++&lt;br /&gt;
weiß    |&lt;br /&gt;
rot     |+++++&lt;br /&gt;
blau    |++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-|--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Kfz_Spannungsspitzenkiller_/_Transientenschutz&amp;diff=70826</id>
		<title>Kfz Spannungsspitzenkiller / Transientenschutz</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Kfz_Spannungsspitzenkiller_/_Transientenschutz&amp;diff=70826"/>
		<updated>2013-01-12T22:53:43Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Kritik + Links ins Forum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Transientenschutz.jpg|thumb|Aufgebaute Schaltung]]&lt;br /&gt;
Elektronische Schaltungen, die am Spannungsnetz eines Kraftfahrzeuges betrieben werden, müssen vor Beschädigungen durch zu hohe Spannungsspitzen (auch als Transienten bezeichnet) geschützt werden. Diese einfache Schaltung übernimmt eine solche Schutzfunktion.&lt;br /&gt;
&lt;br /&gt;
== Ausgangssituation ==&lt;br /&gt;
&lt;br /&gt;
In [[KFZ|Kraftfahrzeugen]] (Pkw und Lkw) aber auch bei anderen Fahrzeugen, können kurzzeitig hohe Spannungen auftreten. An der Starterbatterie treten  im Regelbetrieb (durch die Arbeit der Lichtmaschine) Spannungsschwankungen zwischen ca. 8&amp;amp;nbsp;und 14,4&amp;amp;nbsp;Volt auf. Hinzu kommen aber sehr kurze Transienten, die weitaus größer sein können. Zum Beispiel durch das Schalten eines Relais oder einen Wackelkontakt.&amp;lt;ref&amp;gt;[http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23 &#039;&#039;de.sci.electronics-FAQ&#039;&#039;]. FAQ der Newsgruppe de.sci.electronics.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Klemmenbezeichnungen ===&lt;br /&gt;
&lt;br /&gt;
In Kraftfahrzeugen sind die Klemmenbezeichnungen für bestimmte Signale oder Pole teilweise genormt oder üblich. Die Klemmenbezeichnungen für Kraftfahrzeuge sind in Deutschland in der DIN 72552 genormt. Aber auch abweichende, herstellerspezifische Bezeichnungen sind möglich.&lt;br /&gt;
Zu den wichtigen Klemmen im Fahrzeug im Rahmen dieses Artikels gehören:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Klemme Nr. !! Bedeutung !! Farbe (nicht genormt aber üblich)&lt;br /&gt;
|-&lt;br /&gt;
| 15 || geschaltetes Plus vom Zündstartschalter (wird geschaltet sobald der Zündschalter in die erste oder weitere Stellung gedreht wird) || Schwarz&lt;br /&gt;
|-&lt;br /&gt;
| 30 || Plusleitung direkt von der (Starter-) Batterie || Rot&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Masse Batterie/Karosserie || Braun&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Selbstentwickelte Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Soll eine Schaltung im Fahrzeug verwendet werden, sollte schon bei der Entwicklung darauf geachtet werden, daß die Elektronik gegenüber derartigen Störungen geschützt wird. Die nachfolgend gezeigte Schutzschaltung sollte deshalb gleich mit in das Gerät integriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Problem mit billigen Elektronikgeräten im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Die meisten (billigen) Zubehörteile, die ihre Spannung aus dem Kfz-Bordnetz beziehen (üblicherweise über den Zigarettenanzünder bzw. die  Bordspannungssteckdose), weisen keinen geeigneten Schutz vor den zerstörerischen Überspannungen auf. Zu solchen Geräten gehören u.&amp;amp;nbsp;a. Ladeadapter für Mobiltelefone, Audiowiedergabegeräte, USB Kfz-Adapter aber auch Navigationsgeräte oder die zunehmend beliebten Tagfahrleuchten auf LED-Basis. Solche Geräte weisen oft einen Hinweis darauf auf, daß sie nicht bei laufendem Motor betrieben werden dürfen.&lt;br /&gt;
&lt;br /&gt;
Gerade LED Tagfahrleuchten werden häufig durch sehr kurze Transienten mit hoher Frequenz beschädigt, da die ggf. einfachen integrierten Schutzschaltungen den verbauten Spannungsregler nicht ausreichend vor einer kritischen Überspannung (meistens ab 40&amp;amp;nbsp;Volt) schützen.&lt;br /&gt;
&lt;br /&gt;
== Schutzschaltung ==&lt;br /&gt;
[[Datei:Kfz1.png|thumb|Schaltplan]]&lt;br /&gt;
Die gezeigte Schaltung besteht nur aus zwei Bauteilen: einer Drossel (Spule) und einer (bidirektionalen) Suppressordiode, auch Transil (Markenname von ST Microelectronics), Transient Absorption Zener Diode (TAZ-Diode) oder Transient Voltage Suppressor Diode (TVS-Diode) genannt. &lt;br /&gt;
&lt;br /&gt;
Die Diemensionierung der Bauteile ist so ausgelegt, daß die Schaltung folgende Kenndaten aufweist:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Betriebsspannung typisch || 0...23 V&lt;br /&gt;
|-&lt;br /&gt;
| maximale Ausgangsspannung || 15,2...16,8 V&lt;br /&gt;
|-&lt;br /&gt;
| Strombelastbarkeit || 1,2 A&lt;br /&gt;
|-&lt;br /&gt;
| Belastbarkeit max. || 15 W&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Stück !! Bezeichner !! Dimension !! Typ&lt;br /&gt;
|-&lt;br /&gt;
| 1 || L1 || 47 µH, 1,2 A || TSL0808-470K1R2&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || TVS 16V || P6KE16CA&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Flachstecker || 6,35 x 0,81 mm || Faston TAB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
&lt;br /&gt;
Die Drossel filtert hohe Spannungen mit hoher Frequenz und verhindert so, daß diese an die nachgeschaltete Elektronik weitergeleitet werden. Die Suppressordiode wird bei Spannungen oberhalb ihrer Durchschlagspannung von 15,2&amp;amp;nbsp;V leitend und schließt den Eingang mit Masse kurz, so daß auch längere Impulse mit zu hoher Spannung abgeleitet werden.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Da die Überspannungsschutzdiode einen Kurzschluß verursacht, ist es wichtig, daß vor der ganzen Schaltung eine passende Schmelzsicherung verbaut wird, die im Falle einer anhaltenden Überspannung und damit einhergehendem Stromfluß durch die Diode geopfert wird. Die Sicherung sollte eine maximale Belastbarkeit von 1&amp;amp;nbsp;A besizten. Der Transientenschutz darf also nicht direkt an die Fahrzeugbatterie angeschlossen werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
[[Datei:Kfz2.png|thumb|Platinenlayout (12,5 x 20,5&amp;amp;nbsp;mm)]]&lt;br /&gt;
[[Datei:Kfz protect.svg|thumb|Installationsbeispiel]]&lt;br /&gt;
Die Bauteile finden auf einer kleinen einseitigen Platine Platz, welche anschließend ggf. noch in einem kleinen Plastikgehäuse vergossen werden kann. Durch die in der Kfz-Elektronik gängigen Flachsteckerkontakte mit 6,35&amp;amp;nbsp;mm Breite, die auf der Unterseite eingelötet werden, kann eine einfache Verkabelung des Moduls mit der Bordelektronik erfolgen. &lt;br /&gt;
&lt;br /&gt;
Das abgebildete Installationsbeispiel zeigt, wie das Modul in die Fahrzeugelektronik integriert werden kann. An der Ausgangsseite kann dann die zu betreibende und nun geschützte Last betrieben werden.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
* [[Media:Kfzprotect.brd|Platinenlayout im EAGLE BRD-Format]]&lt;br /&gt;
&lt;br /&gt;
== Kritik ==&lt;br /&gt;
* Löst die Sicherung aus, muss der Benutzer sie tauschen. Bis dahin funktioniert die Schaltung nicht mehr.&lt;br /&gt;
* Bei energiereichen Störungen wird die TVS-Diode (und evtl. die Schaltung dahinter) schneller zerstört als die Sicherung auslösen kann&lt;br /&gt;
&lt;br /&gt;
Diskussionen mit Erklärungen und Tipps zu dem Thema sind unter anderem:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/265428 Spannungsspitzen Auto TVS Diode]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/218160 Frage zu &amp;quot;load dump&amp;quot;]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/210621 Automotive Problem - Load Dump, Pulse 5]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/281681 5V-Netzteil fürs Auto]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;br /&gt;
[[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Treiber&amp;diff=66772</id>
		<title>Treiber</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Treiber&amp;diff=66772"/>
		<updated>2012-06-10T16:45:03Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Weitere diskrete Treibervariante verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Transistor-Treiber&#039;&#039;&#039; ist eine Schaltung, welche den nötigen Strom zur Verfügung stellt, um einen großen [[Transistor]] in der erforderlichen Zeit ein- bzw. auszuschalten. Es handelt sich dabei meist um einen Verstärker mit zusätzlichem [[Pegelwandler]]. Dadurch ist es möglich, mit einem Logikausgang, welcher meist mit 5 oder 3,3V betrieben wird, große Lasten mit [[FET|MOSFETs]] bzw. [[IGBT|IGBTs]] zu schalten. Dieser Treiber kann analog (linear) oder digital arbeiten.&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird hauptsächlich auf die Besonderheiten zur Ansteuerung von MOSFETs und IGBTs in der Leistungselektronik Bezug genommen, welche geschaltet betrieben werden. Diese Treiber sind digitale [[MOSFET-Übersicht#Mosfet-Treiber | MOSFET-Treiber]]&lt;br /&gt;
&lt;br /&gt;
==Anwendung ==&lt;br /&gt;
&lt;br /&gt;
[[FET | MOSFETs]] und [[IGBT]]s werden mit einer Spannung gesteuert. Bei einer Gate-Source bzw. Gate-Emitter Spannung von 0V ist das Bauteil gesperrt bzw. hochohmig. Steigt die Spannung über die sogenannte &amp;quot;Schwellenspannung&amp;quot; (engl. threshold voltage) – die für Leistungsbauteile zwischen ca. 3 und 4,5V liegt – &lt;br /&gt;
geht das Bauteil langsam vom gesperrten in den leitenden Zustand über. Bei einem weiteren Spannungsanstieg bis zu einem Level von ca. 12V verringert sich der Einschaltwiderstand beim MOSFET bzw. der Kollektor-Emitter Spannungsabfall beim IGBT auf den im Datenblatt angegebenen minimalen Wert. Eine weitere Erhöhung führt nur zu einer vergleichsweise geringen Reduktion des Widerstandes bzw. Spannungsabfalls und erhöht die Energiemenge, die beim Schalten durch den Treiber &lt;br /&gt;
umgeladen werden muß dramatisch (P~U² !). Praktisch beschränkt man sich daher meist auf Gatespannungen zwischen 12...18V. Aufgrund von unvermeidbaren, sehr kleinen parasitären Effekten tritt meist ein geringes Überschwingen der Gatespannung auf. Zusammen mit diesem Überschwingen darf die Gatespannung bei nicht &amp;quot;Logic-Level&amp;quot; FETs 20V nie überschreiten.&lt;br /&gt;
&lt;br /&gt;
Im Betrieb fällt an einem Leistungstransistor immer eine bestimmte Verlustleistung an. Diese Verluste teilen sich auf in &amp;quot;Schaltverluste&amp;quot; und &amp;quot;Leitend- bzw. ON-Verluste&amp;quot;. Die ON-Verluste sind hauptsächlich vom Leistungsschalter selbst abhängig, die Schaltverluste hingegen von der Schaltgeschwindigkeit. Je schneller ein FET/IGBT ein- bzw. ausgeschaltet wird, desto geringer sind die Schaltverluste.&lt;br /&gt;
&lt;br /&gt;
Leider gibt es hier neben physikalischen Grenzen insbesondere unerwünschte Nebenwirkungen, nämlich die EMV (&#039;&#039;&#039;E&#039;&#039;&#039;lektro &#039;&#039;&#039;M&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit). Je schneller geschaltet wird, desto stärker sind die Störungen die dadurch erzeugt werden. Diese Störungen sind sehr schnell so stark, daß andere Schaltungen im Umkreis von einigen Metern beeinflußt werden d.h. die USB Maus leuchtet plötzlich auf, ohne daß sie bewegt wurde bzw. der eigene Mikrocontroller macht nicht mehr was er eigentlich sollte. EMV ist Heute eines der wichtigsten &amp;quot;Krisenthemen&amp;quot; während der Entwicklungsphase, daher nicht auf die leichte Schulter nehmen.&lt;br /&gt;
&lt;br /&gt;
=== Gatebeschaltung ===&lt;br /&gt;
&lt;br /&gt;
Zwischen Treiberstufe und Schalter sind in fast allen Fällen einige passive Bauteile vorhanden. Dies wird hier im Weiteren als &amp;quot;Gatebeschaltung&amp;quot; bezeichnet.&lt;br /&gt;
&amp;lt;br&amp;gt; Hier ein Beispiel mit &amp;quot;Vollausstattung&amp;quot; und die dazugehörige Erklärung:&lt;br /&gt;
&lt;br /&gt;
# Gatewiderstand &amp;quot;R_g1&amp;quot;, um die Schaltgeschwindigkeit den Erfordernissen anzupassen. Je schneller die Schaltflanke, desto geringer die Schaltverluste. ABER Je schneller die Schaltflanke, desto größer die erzeugten Störungen (EMV). Gleichzeitig hat ein schnelles &amp;quot;Abschalten&amp;quot; auch einen starken Überschwinger (snap-off einer Diode und/oder Selbstinduktion (inductive kick)) zur Folge. Aus diesem Grund wird häufig&lt;br /&gt;
# ein Widerstand &amp;quot;R&amp;quot;_g2 und eine Diode &amp;quot;D&amp;quot; in Serienschaltung dem o.g. Gatewiderstand &amp;quot;R_g1&amp;quot; parallelgeschaltet, und zwar so, daß ein langsames ausschalten (D gesperrt) aber ein schnelles einschalten (D leitend und damit R_g1 parallel zu R_g2) ermöglicht wird, d.h. R_g1 || (R_g2+D).&lt;br /&gt;
# Um das empfindliche Gate zu schützen, wird oft eine Z-Diode, besser eine schnellere Transil-Diode (Transient Suppressor Diode) so zwischen &amp;quot;Gate&amp;quot; und &amp;quot;Source&amp;quot; bzw. &amp;quot;Emitter&amp;quot; geschaltet (&amp;quot;Kathode&amp;quot; am &amp;quot;Gate&amp;quot;), daß das &amp;quot;Gate&amp;quot; vor Spannungen &amp;gt; 20V geschützt wird. Bei einem sauberen Aufbau kann diese Sicherheitsfunktion normalerweise entfallen. Bei Testaufbauten ist eine 16V Transil-Diode Aufgrund der dort häufig vorkommenden Induktivitäten (Drahtverhau ;-) SEHR zu empfehlen. Das gleiche gilt für die&lt;br /&gt;
# Klemmdiodenkombination (Z- bzw. Transil Diode, antiseriell mit einer normalen Diode) zwischen &amp;quot;Drain&amp;quot; bzw. &amp;quot;Kollektor&amp;quot; und Gate so (&amp;quot;Kathode&amp;quot; der Z-Diode an &amp;quot;Drain&amp;quot; bzw. &amp;quot;Kollektor&amp;quot;), daß die Diode das Gatepotential anhebt, wenn die &amp;quot;Drain-Source&amp;quot; bzw. &amp;quot;Kollektor-Emitter&amp;quot; Potential in die Nähe der maximalen Blockierspannung (Spannungsfestigkeit) des Schalters kommt bzw. den vom Entwickler definierten, maximalen Spannungslevel erreicht. Dieses &amp;quot;anheben&amp;quot; führt dann zu einem vergleichsweise hochohmigen Einschalten des Schalters und damit zum VERLUSTBEHAFTETEN Energieabbau. Bei einem 30V FET verwendet man üblicherweise z.&amp;amp;nbsp;B. eine 24V Transil-Diode, bei 150V FET z.&amp;amp;nbsp;B. eine 130V Transil-Diode und bei einem 600V IGBT z.&amp;amp;nbsp;B. eine 540V Transil-Diode. Die antiserielle Diode, die verhindert, daß die Gatespannung bei fehlender Leistungsversorgung über die Transildiode abfließt, muß die gleiche Spannungsfestigkeit wie der Schalter aufweisen.&lt;br /&gt;
&lt;br /&gt;
=== Treiberleistung ===&lt;br /&gt;
&lt;br /&gt;
IGBT und FET sind zwar spannungsgesteuerte Bauelemente, trotzdem muß bei jedem Einschalten und bei jedem Ausschalten die Gatekapazität umgeladen werden, wozu &#039;&#039;Strom&#039;&#039; erforderlich ist. Der Energiegehalt eines Kondensators wird mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;E= \frac{1}{2} \cdot C \cdot U^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
berechnet. Es ist jedoch der Energiebedarf bei jedem Aufladen und Entladen zu berücksichtigen. Zur Ermittlung der wirksamen Kapazität, welche in der Formel benötigt wird, hat es sich bewährt, die Datenblattangabe für &amp;quot;Cies&amp;quot; beim IGBT, bzw. den Datenblattwert für &amp;quot;Ciss&amp;quot; beim FET mit dem Faktor&amp;amp;nbsp;5 zu multiplizieren.&lt;br /&gt;
&lt;br /&gt;
Daher ergibt sich die Treiberleistung wie folgt:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_\text{treiber} = 5 \cdot Cx \cdot U_g^2 \cdot f_\text{schalt}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel bei U&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt;=18V, Cies=4nF und ƒ&amp;lt;sub&amp;gt;schalt&amp;lt;/sub&amp;gt;=5kHz  beträgt P&amp;lt;sub&amp;gt;treiber&amp;lt;/sub&amp;gt;=32mW.&lt;br /&gt;
&lt;br /&gt;
Bei größeren Strömen mit einer höheren Frequenz – z.&amp;amp;nbsp;B. Induktionsheizung – wird die Ansteuerleistung schon sehr interessant, z.&amp;amp;nbsp;B. Ug = 18V, Cies=20nF und ƒ&amp;lt;sub&amp;gt;schalt&amp;lt;/sub&amp;gt;=250kHz, hier beträgt P&amp;lt;sub&amp;gt;treiber&amp;lt;/sub&amp;gt;=8,1W. Zusätzlich muß der Eigenverbrauch des Treibers berücksichtigt werden, der durchaus zwischen 0,5 und 1&amp;amp;nbsp;W liegen kann.&lt;br /&gt;
&lt;br /&gt;
=== Definition zu Low- und High-Side Schalter=== &lt;br /&gt;
 &lt;br /&gt;
;Low-Side–Schalter: Der FET schaltet eine Last gegen GND – auch als &#039;&#039;LS-Schalter&#039;&#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
;High-Side–Schalter: Der FET schaltet eine Last an die Versorgungsspannung – auch als &#039;&#039;HS-Schalter&#039;&#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
===Beispiele zu Low-Side Treibern===&lt;br /&gt;
&lt;br /&gt;
Nachfolgend ein paar Beispiele, die sowohl für FETs, als auch für IGBTs verwendet werden können. Achtung! Auch wenn bei FETs eine Diode (Bodydiode) implementiert ist, muß bei induktiven Lasten oder langen Zuleitungen sowohl bei FETs als auch bei IGBTs eine schnelle Diode parallel zum Leistungsschalter eingesetzt werden. Diese Diode – die hier im Beispiel nicht gezeigt ist – muß räumlich direkt neben dem Leistungsschalter platziert werden. Bitte beachten, daß jede Treiberschaltung sowohl an den Leistungsschalter, als auch an den gesamten Lastkreis individuell angepaßt werden muß.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber_1_2.png|miniatur|ohne|600px|Beispiele zu diskreten LS-Treibern ]]&lt;br /&gt;
&lt;br /&gt;
Treiber-1 eignet sich eher dazu langsamere Schaltvorgänge mit Kleinsignal-FETs durchzuführen, aber auch höhere Leistungen sind prinzipiell so machbar, wenn man sich die höhere Verluste durch die langsame Ansteuerung erlauben kann.&lt;br /&gt;
Der Widerstand R26 sollte an das gewünschte Schaltverhalten angepaßt werden, weniger als ca. 100Ω ist wegen der Stromtragfähigkeit des gewählen T4 nicht zu empfehlen. Das Schaltverhalten ist hier sehr unsymmetrisch (&amp;quot;langsam ein&amp;quot;, sehr schnell &amp;quot;aus&amp;quot;). Sollten größere Ströme geschaltet werden wird eine andere Ansteuermöglichkeit empfohlen.&lt;br /&gt;
&lt;br /&gt;
Treiber-2 ist durchaus in der Lage höhere Impulsleistungen an den Leistungstransistor zu liefern.&lt;br /&gt;
Letztendlich ist der maximale Strom von der Stromtragfähigkeit von T1&amp;amp;T2 abhängig. Die Gatewiderstände sind für schnelles (stromloses!) Einschalten und etwas langsameres Abschalten ausgelegt. Das oben gezeigte Beispiel kann so angepaßt werden, daß beim Abschalten nur ein kleiner Spannungsüberschwinger (10..20% der Betriebsspannung) zu sehen ist. Die Anbindung von C1 ist relativ kritisch, auf kürzest mögliche Anbindung ist zu achten&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, daß Treiber 2 am Eingang vor R4 ein Signal erwartet, welches für &amp;quot;An&amp;quot; bereits auf der benötigten Gate-Spannung des FETs (typischerweise 10V) liegt. Steht dagegen nur ein Logik-Signal mit 5V oder 3.3V zur Verfügung, so muß diese zuerst über eine weitere Stufe erhöht werden. Folgende Schaltung erledigt dies. Zu beachten ist aber, daß dadurch das Eingangssignal invertiert wird.&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber2_LogicLevel.png|miniatur|ohne|600px|Diskreter LS-Treiber 2 für LogicLevel-Signal]]&lt;br /&gt;
&lt;br /&gt;
Eine andere Variante eines diskreten Treibers der von Haus aus mit unterschiedlichen Spannungsniveaus auskommt, ist [http://www.mikrocontroller.net/topic/261315#2710777 in diesem Thread] beschrieben. Diese Variante kann auch als HS-Treiber verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber_3.png|miniatur|ohne|600px|Beispiel eines LS-Treibers mit Logikbausteinen]]&lt;br /&gt;
&lt;br /&gt;
Dieses Schaltungsbeispiel ist gut geeignet, um Leistungsfets mit einer mittleren Leistung anzusteuern. Es ist zu empfehlen einen Leistungsschalter mit geringer Gateladung (Qg) auszusuchen. Achtung auf den Maximalstrom den der Inverter liefern kann. Der 4069 sollte mit ca. 12V, max. 15V betrieben werden. Wenn ein Logic-Level Schalter ausgesucht wird, ist ein auch 74AC14 (kein AHC) zu empfehlen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber_4.png|miniatur|ohne|600px|Beispiele eines LS-Treibers mit einem fertigen IC]]&lt;br /&gt;
&lt;br /&gt;
Oben im Bild ist ein kommerzieller Treiber-IC zu sehen – hier im Beispiel 2127 von IR. Hierzu gibt es jedoch sehr viele Alternativen, sowohl von IR, als auch von anderen Firmen. Die Beschaltung ist jedoch immer relativ ähnlich, siehe dazu [[MOSFET-Übersicht#Mosfet-Treiber | MOSFET-Treiber]].&lt;br /&gt;
&lt;br /&gt;
Achtung! Der GND-Zweig des Leistungskreises hat bei unsachgemäßem Aufbau einen recht großen Einfluß auf die beim Schalter ankommende Gatespannung. Je nach Aufbau führt das zu einer zu geringen Gatespannung im Schaltmoment – U_gs direkt am Schalter bricht beim Einschalten ein – oder zu einer Überspannung am Gate – U_gs schwingt über die Gatetreiberversorgung hinaus. Beides führt vermutlich früher oder später zu einer Zerstörung des Leistungsschalters. Letzters kann oft durch eine 15V-Z-Diode direkt am Schalter zwischen Gate und Source bzw. Emitter verhindert werden, eine Optimierung des Layouts bzw. der Verdrahtung ist jedoch zielführender. Beschreibungen hierzu im weiteren Verlauf des Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die oben gezeigte Masseführung ist nicht zum Spaß &#039;&#039;genau so&#039;&#039; gezeichnet. Durch eine unsaubere Masseführung – und dazu zählt z.&amp;amp;nbsp;B. auch schon der Anschluß der Treiber-Masse direkt am GND-Symbol statt direkt am Schalter – kann der Treiber oder der Schalter durch Überspannung zerstört werden. Auch ein zu starkes &amp;quot;Unterschwingen&amp;quot; des GND-Potentials gegenüber des gerade auf Masse gelegten Gatesignals führt unweigerlich zur Zerstörung des Treibers. Viele Bausteine sind bis zu einer Spannungsdifferenz von ca. –5V betriebsfähig.&amp;lt;br&amp;gt;&lt;br /&gt;
10cm Kabel besitzen eine parasitäre Induktivität von ca. 100nH. Werden 50A in 1µs geschaltet – was schon relativ langsam ist – entsteht bei jedem Schalten eine Selbstinduktionsspannung von 100nH·50A/1µs = 5V.&lt;br /&gt;
&lt;br /&gt;
===Beispiele zu High-Side Treibern===&lt;br /&gt;
&lt;br /&gt;
Nachfolgend ein paar Beispiele zu HS-Treibern, die sowohl für FETs, als auch für IGBTs verwendet werden können. Bitte beachten, daß jede Treiberschaltung sowohl an den Leistungsschalter, alsauch an den gesamten Lastkreis individuell angepaßt werden muß.&lt;br /&gt;
High-Side Treiber sind etwas komplexer aufgebaut. Der Versorgungsspannungskreis muss isoliert zur restlichen Beschaltung aufgebaut werden. Auf die Isolationsabstände ist besonders zu achten.&lt;br /&gt;
&lt;br /&gt;
Achtung: Auch wenn bei FETs eine – meist unzureichende – Diode implementiert ist, sollte bei induktiven Lasten (oder langen Zuleitungen) sowohl bei FETs, als auch bei IGBTs eine schnelle Diode parallel zum Leistungsschalter eingesetzt werden. Diese Diode – die hier im Beispiel nicht gezeigt ist – muß räumlich direkt neben dem Leistungsschalter implementiert werden. &lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_HS_Treiber_1.png|miniatur|ohne|600px|Beispiel eines diskreten HS-Treibers ]]&lt;br /&gt;
&lt;br /&gt;
Hier im ersten Beispiel eine diskrete Ansteuerung für einen HS-Schalter. Achtung, das Signal durch die Push-Pull-Stufe invertiert. Statt Q5/Q6 wird empfohlen einen integrierten high speed Treiber wie z.&amp;amp;nbsp;B. die sehr preisgünstigen MC34151 oder MC34152 zu verwenden.&lt;br /&gt;
Die hier abgebildete Beschaltung – die ohne weitere Veränderung bei geringerer Schaltleistung auch ohne die Push-Pull Stufe betrieben werden kann – ist für eine Betriebsspannung von ca. 400V ausgelegt. Der Widerstand R12 (hier 4k7) muß an eine geänderte Spannung angepaßt werden. Für 40V beträgt er in dieser Beschaltung 3k3. Diese Schaltung kann auch sehr einfach simuliert werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_HS_Treiber_2.png|miniatur|ohne|600px|Beispiel eines HS-Treibers mit einem fertigen IC ]]&lt;br /&gt;
&lt;br /&gt;
Das zweite Beispiel verwendet einen integrierten HS-Schalter von International Rectifier (IR) und eine separate, isolierte Versorgungsspannung. Zum IC gibt es sehr viele Alternativen, sowohl von IR, als auch von anderen Firmen. Die Beschaltung ist jedoch immer relativ ähnlich, siehe dazu [[MOSFET-Übersicht#Mosfet-Treiber|MOSFET-Treiber]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_HS_Treiber_3.png|miniatur|ohne|600px|Beispiel eines HS-Treibers mit Bootstrap Versorgung ]]&lt;br /&gt;
&lt;br /&gt;
Das dritte Beispiel unterscheidet sich zum vorhergehenden nur dadurch, daß die Versorgungsspannung für den Treiber über eine Bootstrap-Schaltung gewonnen wird. Näheres im weiteren Verlauf dieses Artikels.&lt;br /&gt;
&lt;br /&gt;
Die oben gezeigte Leitungsführung für Treiberbezugspotential und GND-Potential ist auch hier nicht zum Spaß &#039;&#039;genau so&#039;&#039; gezeichnet. Durch eine unsaubere Leitungsführung – und dazu zählt z.&amp;amp;nbsp;B. auch schon der Anschluß des Treiber-Bezugspotentials nicht direkt an Emitter bzw. Source – kann der Treiber oder der Schalter durch Überspannung zerstört werden. Auch ein zu starkes &amp;quot;Unterschwingen&amp;quot; des GND-Potentials gegenüber des gerade auf Bezugspotential gelegten Gatesignals führt unweigerlich zur Zerstörung des Treibers. Viele Bausteine sind bis zu einer Spannungsdifferenz von ca. –5V betriebsfähig.&lt;br /&gt;
10cm Kabel besitzen eine parasitäre Induktivität von ca. 100nH. Werden 50A in 1µs geschaltet – was schon relativ langsam ist – entsteht bei jedem Schalten eine Selbstinduktionsspannung von 100nH*50A/1µs = 5V.&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung eines High-Side Treibers ===&lt;br /&gt;
&lt;br /&gt;
Jede Treiberstufe benötigt eine entsprechende Spannungsversorgung.&lt;br /&gt;
Bei einem LS-Schalter gestaltet sich dies relativ einfach, da die Versorgungsspannung im Bereich von 12..15V über dem GND Potential&lt;br /&gt;
liegt. &lt;br /&gt;
&lt;br /&gt;
Bei einem High Side N-Kanal Schalter ist deutlich mehr Aufwand nötig, da hier die Treiberspannung 12..15V über dem Sourcepotential des HS-Schalters liegen muß. Das Source-Potential liegt beim HS-Schalter je nach Anwendungsfall auf 12V bis 400V, manchmal sogar noch höher.&lt;br /&gt;
&lt;br /&gt;
==== Versorgung über isolierte DCDC Wandler ====&lt;br /&gt;
&lt;br /&gt;
Die Versorgung hierfür kann relativ einfach mit integrierten DCDC-Wandlermodulen aufgebaut werden, wie sie für wenig Geld bei Conrad oder Reichelt verfügbar sind (Leistung und Isolationsspannung beachten!).&lt;br /&gt;
&lt;br /&gt;
==== Versorgung durch eine Bootstrap Schaltung====&lt;br /&gt;
&lt;br /&gt;
Wenn es sich bei der Applikation um eine Halbbrücke handelt und der HS-Schalter nicht dauerhaft eingeschaltet sein muß (Tastverhältnis &amp;lt;100%), sondern regelmäßig getaktet wird ([[PWM]]), kann die Versorgung des HS-Schalters auch aus der massebezogenen Versorgung des LS-Schalters generiert werden. Diese Schaltung nennt sich &#039;&#039;Bootstrap&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Immer wenn der LS einer Halbbrücke eingeschaltet ist, liegt das Source Potential des High Side Schalters auf GND. In diesem Zeitraum kann der Kondensator am Treiber des HS-Schalters über eine Diode aufgeladen werden. Energiequelle ist hierbei die Spannungsversorgung des LS-Schalters. Siehe dazu eines der Beispiele oben.&lt;br /&gt;
&lt;br /&gt;
=====Bootstrapkondensator=====&lt;br /&gt;
&lt;br /&gt;
Der Bootstrapkondensator soll eine niederinduktive und niederohmige Pufferung des Energiebedarfes für einen Schaltvorgang bereitstellen, daher ist ein Keramikkondensator oder auch ein Folienkondensator erforderlich. Den Energiebedarf eines Schaltvorganges ergibt sich recht einfach:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; C = \frac{Q_\text{gate}}{\Delta U}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: Als erlaubten Spannungseinbruch während der Energieentnahme wird hier 0,5V festgelegt. Die gesamte Gateladung Q&amp;lt;sub&amp;gt;gate&amp;lt;/sub&amp;gt; (Total gate charge) ist hier z.&amp;amp;nbsp;B. 58nC bei U&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt;=10V. Daraus errechnet sich eine Minimalkapazität von 58nC / 0,5V = 116nF. Die Erfahrung zeigt, daß ein großzügiges erhöhen um den Faktor 3..8 sinnvoll ist, da in der Rechnung weder Leckströme des FETs und des Kondensators noch der Energieverbrauch der Treiberschaltung selbst berücksichtigt wird. Des Weiteren ist die Gateladung nur für 10V angegeben. Höhere Gatespannungen erfordern eine höhere Energiemenge. Achtung: je größer der Kondensator gewählt wird, desto mehr Zeit wird zum Laden des Kondensators über die strombegrenzende Bootstrapdiode benötigt.&lt;br /&gt;
&lt;br /&gt;
Auch wenn der Kerko für die Pufferung der Schaltenergie ausreichend ist, ist es meist sinnvoll einen Elko/Tako parallel zu schalten. Die dort gespeicherte Energie hilft z.&amp;amp;nbsp;B. wenn eine längere &amp;quot;on&amp;quot; Zeit erforderlich ist. Genauso verringert der zusätzliche Energiespeicher den zum Ladungsausgleich erforderlichen Strompuls des Kerkos. Dadurch verbessert sich das EMV-Verhalten des Treibers meßbar.&lt;br /&gt;
&lt;br /&gt;
=====Auslegung des Bootstrapdiodenzweiges =====&lt;br /&gt;
&lt;br /&gt;
# Die Spannungsfestigkeit der Diode muß größer sein, als die auftretende Maximalspannung des Lastkreises. &lt;br /&gt;
# Im ersten Ansatz muß die Recovery-Zeit der Diode (t&amp;lt;sub&amp;gt;rr&amp;lt;/sub&amp;gt;) mindestens um den Faktor 10 kürzer sein, als die minimale &amp;quot;on&amp;quot; Zeit des LS-FETs. Ist z.&amp;amp;nbsp;B. der LS-FET immer für mindestens 10ms ein, ist eine 1N4007 (t&amp;lt;sub&amp;gt;rr&amp;lt;/sub&amp;gt; ca. 1µs) ausreichend. Bei höheren Schaltfrequenzen genügt oft eine UF4007 (t&amp;lt;sub&amp;gt;rr&amp;lt;/sub&amp;gt; ca. 75ns). In einer Halbbrücke bedeutet eine längere t&amp;lt;sub&amp;gt;rr&amp;lt;/sub&amp;gt;-Zeit jedoch, daß der Bootstrapkondensator des HS-Treibers beim Einschalten solange entladen wird, bis die Diode wieder sperrt. In diesem Fall muß die schnellere Diode unabhängig von der &amp;quot;on&amp;quot; Zeit ausgewählt werden&lt;br /&gt;
#Der zulässige Strom durch die Diode ist das letzte Auswahlkriterium. Da der Strom kaum kontrollierbar ist muß er mit einem Widerstand begrenzt werden. Bei einer 1N4007 beträgt der wiederholbare Maximalstrom 1A. Die Diode hat als sogenannten &#039;&#039;Single pulse&#039;&#039; aber eine deutlich größere Strombelastung (Datenblattangabe UF4007 = 30A). Da der Kondensator nur beim ersten Einschalten komplett vollgeladen, im Betrieb aber wie hier im Beispiel berechnet nur um &amp;lt;0,5V  aufgeladen wird, kann der Widerstand kleiner ausfallen. Daher ist in diesem Beispiel bei 15V Versorgungsspannung und Ausnutzung eines 50% = 15A Peaks für das erste Aufladen ein Minimalwiderstand von (15V – 1,5V) / 15A = 0,9Ω erforderlich. Der Widerstand wird auf 1Ω festgelegt. Die 1,5V stammen vom Spannungsabfall an der Diode bei 1A, bei höheren Strömen steigt der Spannungsabfall an.&lt;br /&gt;
&lt;br /&gt;
Aus dem Wert des Bootstrap-Kondensators, des -widerstandes  und des Tastverhältnisses (hier im Beispiel auf 2% festgelegt) ergibt sich eine minimale &amp;quot;on&amp;quot; Zeit für den LS-Schalter von&lt;br /&gt;
: t = R&amp;lt;sub&amp;gt;bt&amp;lt;/sub&amp;gt; · C&amp;lt;sub&amp;gt;bt&amp;lt;/sub&amp;gt; / D&lt;br /&gt;
d.h. 1Ω · 470nF / 0,02 = 23,5µs. Schneller als gut 40kHz sollte in diesem Beispiel also nicht geschaltet werden, da sonst der Bootstrapkondensator nur unzureichend nachgeladen werden kann.&lt;br /&gt;
&lt;br /&gt;
===Besonderheiten beim Treiberaufbau===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Gatekreis_Bild1.png|miniatur|left|300px|Gatekreis, wie im Schaltplan gezeichnet]] &lt;br /&gt;
Fast jeder, der schon einmal eine geschaltete Leistungsendstufe in Betrieb genommen hat, mußte feststellen, daß der Leistungsschalter nicht immer genau das macht, was man vorher geplant hatte. Die Hauptursache ist meist – neben Problemen mit der Leistungsversorgung selbst, siehe weiter unten – der Gatekreis.&lt;br /&gt;
&lt;br /&gt;
Die abgebildete Schaltung zeigt einen Aufbau wie er – unabhängig wie die Treiberstufe selbst umgesetzt wird – standardmäßig im Schaltplan implementiert ist. &lt;br /&gt;
&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Gatekreis_Bild2.png|miniatur|rechts|350px|Gatekreis, wie er real auf der PCB vorhanden ist]]&lt;br /&gt;
&lt;br /&gt;
Rechts ist der Gatekreis so gezeichnet, wie er sich unter realen Bedingungen wirklich darstellt.&lt;br /&gt;
&lt;br /&gt;
Es ist hier nicht die Frage, ob diese parasitären Einflüsse wirklich vorhanden sind oder nicht, sondern nur wie groß die Werte sind. Hier sind unterschiedliche Einflüsse dargestellt, die sich teilweise gegenseitig beeinflussen.&lt;br /&gt;
&lt;br /&gt;
# R &amp;amp; L zwischen Source und GND:&amp;lt;br/&amp;gt;Das &amp;quot;Treiber GND&amp;quot; Signal ist wie deutlich zu sehen DIREKT am Source Anschluß des FETs angeschlossen, und nicht am GND-Fußpunkt des Leistungspfades von &amp;quot;Vcc&amp;quot; zu &amp;quot;GND&amp;quot;.Jeder Zentimeter der Leitung zwischen Source und GND beeinflußt den Gatekreis. Sobald der FET durchschaltet entsteht an den o.g. parasitären Bauteilen (Induktivität und Widerstand) ein Spannungsabfall, der dem Gatesignal entgegenwirkt, und damit z.&amp;amp;nbsp;B. beim Einschalten die am FET anliegende Gatespannung reduziert.&lt;br /&gt;
# R &amp;amp; L zwischen den Treiberausgängen &amp;quot;Gate Signal&amp;quot; und &amp;quot;Treiber GND&amp;quot;:&amp;lt;br/&amp;gt;Da der Widerstand im unteren mΩ-Bereich liegt kann dieser Einfluß hier ignoriert werden. Die Induktivität im Gatekreis bremst jedoch den Signalanstieg am Gate, sodaß auch das Schaltverhalten beeinflußt wird. Hier besteht auch die Gefahr, daß die Induktivität mit der Gatekapazität einen Schwingkreis bildet.&lt;br /&gt;
# Überkopplung über Ciss:&amp;lt;br/&amp;gt;Wenn das Drainpotential z.&amp;amp;nbsp;B. beim abschalten plötzlich von &amp;quot;GND&amp;quot; auf &amp;quot;Vcc&amp;quot; springt, findet über Ciss eine überkopplung auf das Gatesignal statt. Diese Potentialanhebung kann im schlimmsten Fall zum wiedereinschalten des FETs oder zu Oszillationen führen. &lt;br /&gt;
&lt;br /&gt;
;Fazit: Die Schleife zwischen den Treiberausgängen &amp;quot;Gate Signal&amp;quot; und &amp;quot;Treiber GND&amp;quot; muß &#039;&#039;unbedingt&#039;&#039; so klein wie möglich gehalten werden. Sitzt der Treiber nicht direkt am Leistungs-FET, ist es empfehlenswert die zwei Kabel so kurz wie möglich halten und zu verdrillen. Auf eine direkte Anbindung an Source bzw. Emitter ist zu achten!&lt;br /&gt;
&lt;br /&gt;
;FAQ:&lt;br /&gt;
&lt;br /&gt;
FET wird zu heiß:&lt;br /&gt;
*Verlustleistung zu hoch, Ursache könnte sein daß &lt;br /&gt;
**die Gatespannung zu niedrig ist, &lt;br /&gt;
**die Schaltgeschwindigkeit und damit die Treiberleistung zu gering ist oder  &lt;br /&gt;
**Schwingungen auf der Gateleitung vorhanden sind.&lt;br /&gt;
*Die Kühlung ist unzureichend&lt;br /&gt;
**da keine oder falsche Isolierfolie oder,&lt;br /&gt;
**ein zu kleiner Kühlkörper verwendet wird.&lt;br /&gt;
&lt;br /&gt;
== Leistungselektronik ==&lt;br /&gt;
&lt;br /&gt;
=== Parallelschalten von Leistungstransistoren===&lt;br /&gt;
&lt;br /&gt;
FETs und IGBTs lassen sich relativ einfach parallelschalten, wenn ein paar wenige Grundsätze beachtet werden:&lt;br /&gt;
# Jeder Transistor bekommt einen eigenen Gate-Vorwiderstand bzw. eine eigene R||RD Beschaltung (Gatebeschaltung).&lt;br /&gt;
# Die Gatebeschaltung wird möglichst nahe am Gate- und Source-Anschluß angebracht und bezüglich Leitungslänge (Induktivität) symmetriert. Die Zuleitung zu den Gatebeschaltungen ist unkritischer.&lt;br /&gt;
# Die Leistungsanbindung an Drain und Source – hier zählt &amp;quot;mΩ&amp;quot; und &amp;quot;nH&amp;quot; - wird symmetrisch aufgebaut.&lt;br /&gt;
# Die Schleife &amp;quot;Kondensator — Last — FET — Kondensator&amp;quot; wird minimiert.&lt;br /&gt;
# Jedes Bauteil wird nur zu &amp;lt;80% des maximal Möglichen ausgelastet. Trotz der hier genannten Maßnahmen können Asymmetrieen auftreten.&lt;br /&gt;
&lt;br /&gt;
Sollten auf den Gateleitungen Schwingungen zu beobachten sein, kann es helfen, in &#039;&#039;jede&#039;&#039; Verbindung von Gatetreiber-Source zum Sourceanschluß des Schalters je einen Widerstand zu integrieren. Der Wert sollte bei etwa 10..30% des Gatewiderstandes liegen.&lt;br /&gt;
&lt;br /&gt;
=== Stützkondensator ===&lt;br /&gt;
&lt;br /&gt;
==== Einführung ====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Leistungsteil_Bild1.png|miniatur|left|350px|Einfache Endstufe wie im Schaltplan gezeichnet]]&lt;br /&gt;
Im nebenstehenden Bild ist der &amp;quot;Standard-Schaltplan&amp;quot; einer Endstufe mit ohmscher Last zu sehen.&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, der Entwickler hat eine neue Autobatterie mit 13,5V als Stromquelle, und einen Heizwiderstand (L des Widerstandes hier vernachlässigt) mit 0,1 Ω. Der FET und die je 1m langen Zuleitungen haben zusammen 4mΩ. Dies ergibt einen Maximalstrom von ca. 130A.&lt;br /&gt;
&lt;br /&gt;
Die Leistung des Heizwiderstandes soll mit einer PWM-Frequenz von 10kHz geregelt werden. In den nachfolgenden Beispielen wird ein Tastverhältnis von 50% fest vorgegeben&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Zwischenkreiskondensator_Ideal.png|miniatur|left|350px|Idealer Spannung- und Stromverlauf an einer ohmschen Last]]&lt;br /&gt;
Und hier der &#039;&#039;&#039;ideale&#039;&#039;&#039; Spannungs- und Stromverlauf zwischen FET und Lastwiderstand.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Zwischenkreiskondensator_Real1.png|miniatur|left|350px|Annähernd realer Spannung- und Stromverlauf an der ohmschen Last mit Induktivitäten in der Zuleitung]]&lt;br /&gt;
Jetzt blicken wir der Realität ins Auge, und fügen bei unveränderter Gateansteuerung für die je 1m langen Versorgungsleitungen von- und zu der Batterie eine Induktivität von 1µH in das Simulationsmodell ein. Ohne genaue Kentniss des Lastkreises bzw. der Verdrahtung kann eine parasitäre Induktivität von 10nH/cm angenommen werden.&lt;br /&gt;
&lt;br /&gt;
Deutlich ist zu erkennen, daß der Strom gerade einmal 120A anstatt 130A erreicht. Die Stromformen ist nicht vergleichbar. &lt;br /&gt;
Des Weiteren erreicht die Spannung am Drain des 30V FETs knapp 900V, was schnell zu einem zerstörten Bauelement führt.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
Ist kein Stützkondensator vorhanden, wird der gesammte AC-Stromrippel direkt aus der Batterie gezogen, was&lt;br /&gt;
# einen hohen Überspannungsimpuls erzeugt.&lt;br /&gt;
# die Zuleitungen als Sendeantenne mißbraucht (EMV).&lt;br /&gt;
# nicht den gewünschten Strom und Stromverlauf im Widerstand erzeugt.&lt;br /&gt;
# die Batterie selbst mit Mikrozyklen belastet.&lt;br /&gt;
# mit höchster Warscheinlichkeit einen häßlichen Ausschwinvorgang erzeugt (EMV).&lt;br /&gt;
&lt;br /&gt;
[[Bild:Zwischenkreiskondensator_Real2.png|miniatur|left|350px|Annähernd kompensierter Spannung- und Stromverlauf an der ohmschen Last mit Induktivitäten in der Zuleitung ]]&lt;br /&gt;
Hier ein Beispiel mit einem Stützkondensator. Die beim Kondensator vorhandenen, parasitären Einflüsse sind in dieser Simulation nicht berücksichtigt um die Komplexität zu minimieren.&lt;br /&gt;
&lt;br /&gt;
Designkriterien für den Kondensator folgen.&lt;br /&gt;
&lt;br /&gt;
Der Einfluß des Kondensators ist deutlich sichtbar. Der rechteckförmige Stromverlauf ist schon fast wieder erkennbar... genauso wie eine Schwingneigung im entstandenen LC-Kreis ;-(&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
==== Design des Stützkondensators ====&lt;br /&gt;
&lt;br /&gt;
Den im Vergleich zwischen den beiden obigen Simulationen fehlende Strom liefert der Kondensator. Die parasitären Elemente dieses Bauteiles haben je nach Typ mehr oder weniger Einfluß in dieser Anwendung.&lt;br /&gt;
&lt;br /&gt;
=====Ersatzschaltbild eines Kondensators=====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Kondensator_Ersatzschaltbild_einfach.png|miniatur|right|350px|Vereinfachtes Ersatzschaltbild eines Kondensators]]&lt;br /&gt;
Unabhängig vom Kondensatortyp besitzt jeder Kondensator nicht nur die aufgedruckte Kapazität, sondern auch einen internen Widerstand (ESR), und eine interne Induktivität (ESL).&lt;br /&gt;
&lt;br /&gt;
Bei gewickelten Kondenstoren (fast alle Elkos und viele Folienkondensatoren) ist die parasitäre Induktivität aufbaubedingt größer, als bei geschichteten Folienkondensatoren. Für die meisten Anwendungen genügen jedoch Elektrolytkondensatoren, die bezahlbar und mit fast beliebigen Werten verfügbar sind.&lt;br /&gt;
&lt;br /&gt;
Häufig ist es einfacher und preiswerter, mehrere Elkos parallel zu schalten, als auf Folienkondensatoren umzusteigen.  Achtung: auf symmetrische Anbindung der parallelgeschalteten Bauteile zum Leistungsschalter achten! Es gibt jedoch einige Anwendungen – meist mit höherer Frequenz oder sehr kurzer Impulszeit (Induktionsheizung [Resonanz-C], elektromagnetische Beschleuniger, Coin-Schrinker, ... ) die die Verwendung von impulsfesten Folienkondensatoren (z.&amp;amp;nbsp;B. MKP10, FKP1,... ) erforderlich machen.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
=====Kondensatorauswahl=====&lt;br /&gt;
&lt;br /&gt;
Die Bestimmung der benötigten Kapazität und Anzahl der Kondensatoren hängt ab von...&lt;br /&gt;
&lt;br /&gt;
# Frequenz (Schaltfrequenz × 2)&lt;br /&gt;
# Flankensteilheit (t&amp;lt;sub&amp;gt;rise&amp;lt;/sub&amp;gt;, t&amp;lt;sub&amp;gt;fall&amp;lt;/sub&amp;gt;)&lt;br /&gt;
# Tastverhältnis = Effektive Strombelastung (nicht Mittelwert!)&lt;br /&gt;
# Kühlmöglichkeiten (Verluste im Kondensator, Temperaturerhöhung, Kühlanbindung)&lt;br /&gt;
# ESR&lt;br /&gt;
# Betriebsspannung&lt;br /&gt;
&lt;br /&gt;
[[Bild:RMS-Berechnung.png|miniatur|right|350px|Berechnung der RMS-Ströme für die am häufigsten vorkommenden Signalformen]]&lt;br /&gt;
Aufgrund der vielfältigen Möglichkeiten wird ein stark vereinfachter Ansatz verfolgt, der für den nicht professionellen Anwendungsfall als ausreichend erscheint. (Verbesserungsvorschläge sind jederzeit erwünscht! bitte über PN)&lt;br /&gt;
&lt;br /&gt;
# Betriebsspannung definieren. Diese Spannung nur zu ca. 80% ausnutzen.&lt;br /&gt;
# Betriebspunkte festlegen: a) Wie lange dauert die Stromentnahme (dt in s), b) wie hoch ist der Peakstrom (I in A) und c) um welchen Wert darf die Spannung dadurch einbrechen (dU in V)? &lt;br /&gt;
# Über die Näherung C = I·dt/dU die dafür benötige Kapazität in Farad berechnen.&amp;lt;br/&amp;gt;Den nächsten, größeren Wert als minimum Wert wählen.&lt;br /&gt;
# Effektivwert der Strombelastung berechnen – siehe die folgende Übersicht unten – Wenn die Stromform im Augenblick unbekannt ist wäre der Versuch angebracht die ungefähre Stromform und damit die Belastung durch eine Simulation zu ermitteln. Ansonsten bleibt nur der Ansatz die Kondensatoren zuerst auf den Peakstrom auszulegen, was bei entsprechendem Geldbeutel der sichere Ansatz ist, und dann Stück für Stück die Anzahl der Kondensatoren zu reduzieren (siehe Punkt 8). &lt;br /&gt;
# Maximalstrom des Kondensators (bei Elkos bei 100Hz) aus dem Datenblatt auslesen. (Bei Folienkondensatoren den nächsten Punkt überspringen)&lt;br /&gt;
# Umrechnen des Datenblattwertes auf die Schaltfrequenz der eigenen Applikation (Umrechnungsbeispiel gilt nur für Elkos!): (von 100Hz auf 10Hz: I[10Hz] = I[100Hz]·0,8; von 100Hz auf 1kHz: I[1kHz] = I[100Hz]·1,3. Eine weitere Vergrößerung für höhere Frequenzen &amp;gt;1kHz ist so nicht zulässig, der 1kHz Wert bleibt bestehen.&lt;br /&gt;
# Wenn die Strombelastung größer als die im Datenblatt angegebene ist, mehrere Kondensatoren parallel schalten oder anderen Kondensatortyp wählen.&lt;br /&gt;
# Kondensator im Betrieb testen.&amp;lt;br/&amp;gt;Dazu wird der Kondensator in der Schaltung betrieben und dabei die Minimalspannung, die Maximalspannung und die Temperatur gemessen. Der Spannungseinbruch muß im selbst gewählten Rahmen bleiben, die Maximalspannung darf nie erreicht werden (Sicherheitsabstand!) und die maximal zulässige Betriebstemperatur des Bauteiles darf nicht erreicht werden (Messungen Anfangs in kurzen, dann je nach Änderungsgeschwindigkeit der Temperatur in längeren Abständen aufnehmen, bis sich die Temperatur auch nach einigen Minuten nicht mehr erhöht, sofortiger Abbruch bei erreichen der Maximaltemperatur!).&amp;lt;br/&amp;gt;Als Daumenregel gilt: Kann das Bauteil nicht mehr angefaßt werden (Vorsicht bei Spannungen über 40V!) ist es vermutlich überbelastet.&lt;br /&gt;
# Den Test unter Punkt 8. an mehreren Betriebspunkten wiederholen.&lt;br /&gt;
&lt;br /&gt;
Auslegungskriterium bei Elkos ist die max. Rippelstrombelastbarkeit, bei Folienkondensatoren der erlaubte Spannungsrippel bzw. -einbruch. Nur in den seltensten Fällen wird die Verwendung von einem einzelnen Kondensator alle Probleme lösen. Die Parallelschaltung von mehreren Kondensatoren des gleichen Typs ist daher grundsätzlich zu empfehlen. Lieber mehrere Elko mit dem besten Preis-Leistungs Verhältnis, als ein Spezialtyp.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
=== Anbindung des Stützkondensators an den Leistungsteil ===&lt;br /&gt;
[[Bild:Leistungsteil_Bild2.png|miniatur|rechts|350px|Einfache Endstufe wie mit Verdrahtung und PCB umgesetzt ]]&lt;br /&gt;
Im Bild ist der Leistungspfad – bestehend aus Zuleitungen, Kondensator und Endstufe – mit den wirksamen parasitären Einflüssen dargestellt.&lt;br /&gt;
Die dort gezeigten parasitären Elemente zwischen Kondensator und Leistungsschalter stellen den kompletten Leistungszweig dar, der im Schaltvorgang belastet wird.&lt;br /&gt;
&lt;br /&gt;
Die Optimierung der im Bild gezeigte Schleife – d.h. kürzest mögliche Verbindung mit minimierter Induktivität – muß beim Design oberste Priorität besitzen.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
===Kühlung der Leistungshalbleiter===&lt;br /&gt;
&lt;br /&gt;
Beim Betrieb von Leistungshalbleitern wird Abwärme erzeugt. Dies geschieht sowohl im eingeschalteten Zustand, als auch bei jedem Ein- und Ausschalten.&lt;br /&gt;
Um eine Überhitzung und damit eine Zerstörung des Bauteiles zu verhindern muß diese Wärmeenergie entsprechend abgeführt werden. Ab einer Verlustleistung von 1..5W - je nach Größe des Bauteiles - ist es nicht mehr ausreichend wenn das Bauteil diese Energie nur abstrahlt. Am häufigsten werden diese Bauteile auf einen [[Kühlkörper]] geschraubt oder geklemmt, selten geklebt. &lt;br /&gt;
&lt;br /&gt;
Sowohl die Oberfläche des Kühlkörpers als auch des wärmeerzeugende Bauteiles sind nicht eben und weisen eine gewisse Rauhigkeit auf. Dies bedeutet, daß sich die zwei Oberflächen nur punktuell berühren (meist nur mit wenigen Prozent der Gesamtfläche) und nicht auf der gesamten Fläche. &lt;br /&gt;
&lt;br /&gt;
Luft hat eine sehr schlechte Wärmeleitfähigkeit und die Luft, die zwischen den zwei Oberflächen liegt, verhindert eine Wärmeleitung zwischen den zwei Teilen sehr effektiv. Als Daumenwert kann man sagen, daß 1µm Luft in etwa einem absoluten Wärmewiderstand von ca. 1K/W entspricht... jedoch wird es sich nur in den seltensten Fällen nur um einen Mikrometer handeln, sondern meistens deutlich mehr. &lt;br /&gt;
&lt;br /&gt;
====Wärmeleitmaterialien:====&lt;br /&gt;
&lt;br /&gt;
Diese Materialien verbessern die thermische Verbindung zwischen einem Bauteil, das Wärme erzeugt, und dem Bauteil, das diese Wärme durch Wärmestrahlung, Konvektion oder Wärmeleitung in ein Kühlmittel (Zwangskühlung durch Luft oder Wasser) abführt. Diese Materialien werden zwar &amp;quot;wärmeleit&amp;quot; -Folie bzw. -Paste genannt, leiten die Wärme jedoch nicht besonders gut...aber immer noch um mindestens den Faktor 100 besser als Luft... und genau das ist der Grund, warum diese verwendet werden müssen. (Kupfer leitet Wärme um den Faktor 15400 besser als Luft) Die Pasten enthalten meist Öle bzw. Wachse und Fette als Bindemittel und zur besseren Wärmeleitung Metalloxide bzw. Metall- oder Kohlenstoffpartikel als wärmeleitende Füllstoffe. Achtung: Die meisten Pasten neigen zur Austrocknung, verlieren also nach ca. 5 Jahren ihre wärmeleitenden Fähigkeiten und sind nur mehr als &amp;quot;Krümel&amp;quot; sichtbar.&lt;br /&gt;
&lt;br /&gt;
Besondere Beachtung finden die Wärmeleitfolien, die auf beiden Seiten eine thermisch leitfähige, wachsartige Beschichtung aufweisen. Diese Beschichtung schmilzt unter Wärmeeinwirkung auf und füllt die Spalten zwischen den Oberflächen besonders gut. Folien dieser Art werden &#039;&#039;Phase Change Material&#039;&#039; genannt. Dieser erste Schmelzprozeß erfordert unter Umständen ein Nachspannen des Bauteiles nach dem ersten Aufheizen, da sich durch den Druck die Schichtdicke verringern kann. Achtung: &#039;&#039;Vor&#039;&#039; dem Aufheizen und Nachspannen hat die Wärmeleitfähigkeit noch nicht die möglichen Minimalwerte erreicht. Zum Teil ist die Wärmeanbindung noch um Faktoren schlechter, daher beim ersten Einschalten noch nicht voll belasten.&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht über die Wärmeleitfähigkeit von verschiedenen Materialien:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Material || Wärmeleitfähigkeit&amp;lt;br/&amp;gt; [W/(m·K)] || Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|Kupfer		|| 370 || schwankt zwischen ca. 350..400&lt;br /&gt;
|-&lt;br /&gt;
|Aluminium		|| 220 || &lt;br /&gt;
|-&lt;br /&gt;
|Stahl		|| 50 || hochlegierte Stähle &amp;lt;20&lt;br /&gt;
|-&lt;br /&gt;
|Eisen          	|| 80||&lt;br /&gt;
|-&lt;br /&gt;
|Silber		|| 430 ||&lt;br /&gt;
|-&lt;br /&gt;
|Zinn		||  67 ||&lt;br /&gt;
|-&lt;br /&gt;
|Blei		|| 35||&lt;br /&gt;
|-&lt;br /&gt;
|Wärmeleitpasten	|| 3..10 ||&lt;br /&gt;
|-&lt;br /&gt;
|Luft		|| 0,024 ||&lt;br /&gt;
|-&lt;br /&gt;
|Wasser		|| 0,6||&lt;br /&gt;
|-&lt;br /&gt;
|Öl		|| 0,15||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht über die Wärmeleitfähigkeit von &#039;&#039;ausgewählten&#039;&#039; Isolierfolien&amp;lt;ref&amp;gt;Wenn jemand gute und bezahlbare Folien findet/kennt, bitte hier mit allen Daten angeben.&amp;lt;/ref&amp;gt; um dem Nutzer die Entscheidung zu erleichtern:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Material || Wärmeleitfähigkeit&amp;lt;br/&amp;gt;[W/(m·K)] || Größe / Menge ||Bezugsquelle || ungefähre&amp;lt;br/&amp;gt;Kosten&lt;br /&gt;
|-&lt;br /&gt;
|WÄRMELEITFOL.86/82 ROT ||6,5 ||100×;100×0,25mm || C|| 14€&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
;Hinweis: Die Wärmeleitfähigkeit von Folien bezieht sich ausschließlich auf die Folie selbst. Selbst unter besten Bedingungen wird man die genannten Werte nicht erreichen, da durch den Übergang vom Bauteil in die Folie und von dort in den Kühlkörper ein zusätzlicher Wärmewiderstand entsteht. Eine Verschlechterung von ca. 30% oder mindestens 0,5K/W bei einem TO220-Bauteil ist zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht über die Wärmeleitfähigkeit von &#039;&#039;ausgewählten&#039;&#039; Wärmeleitpasten&amp;lt;ref&amp;gt;Wenn jemand gute und bezahlbare Pasten findet/kennt, bitte hier mit allen Daten angeben.&amp;lt;/ref&amp;gt; um dem Nutzer die Entscheidung zu erleichtern:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Material || Wärmeleitfähigkeit&amp;lt;br&amp;gt;[W/(m·K)] || Größe / Menge ||Bezugsquelle || ungefähre&amp;lt;br/&amp;gt;Kosten&lt;br /&gt;
|-&lt;br /&gt;
|Artic Silver  	||8,9  ||  3,5g || C || 13,95€ &lt;br /&gt;
|-&lt;br /&gt;
|Standard Pasten auf Silikonbasis ||3,0|| 3g..150g|| C / Rei / ... || wenige €/g &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Montagerichtlinien:&lt;br /&gt;
* Die so beliebten Bohrungen in eine blanken Kühlfahne des Transistors wie z.&amp;amp;nbsp;B. beim TO-220 Gehäuse suggerieren eine fantastisch einfache Montierbarkteit. Wird die Schraube aber nur ein klein wenig zu fest angezogen, verformt sich das Kupfer der Kühlfahne und sorgt dafür, daß sich der Kunststoff umpresste Teil des Transistors ein klein wenig abhebt. Dies hat eine deutlich schlechtere Wärmeanbindung zur Folge. Die isolierte Bohrung bei vollständig umspritzten – nicht zu verwechseln mit auch auf der Rückseite isolierten – Bauteilen umgeht dieses Risiko, genauso wie der nachfolgende Montagevorschlag.&lt;br /&gt;
* Bei hohen Verlustleistungen ist zu empfehlen, das Bauteil gegenüber der Stelle aufzupressen, an der die Verlustleistung entsteht, also direkt auf dem Kunststoff des Transistors über dem Chip.&lt;br /&gt;
* Werden mehrere Bauteile parallel auf dem Kühlkörper montiert sollte zwischen den Bauteilen &#039;&#039;mindestend&#039;&#039; soviel Abstand vorgesehen werden, wie die Breite des Bauteiles beträgt. Dies vermindert die gegenseitige, thermische Beeinflussing der Bauteile und ermöglicht eine bessere Wärmeabfuhr&lt;br /&gt;
* Zur Montage mehrerer Bauteile eignet sich eine Metallschiene die direkt auf den Kunststoff drückt sehr gut. Zwischen &#039;&#039;jedem&#039;&#039; Bauteil ist ein Verschraubungspunkt vorzusehen, damit jedes Bauteil gleichmäßig aufgedrückt wird.&lt;br /&gt;
* Vor dem Aufbringen der Paste/Folie sowohl Bauteil als auch Kühlkörper mit Alkohol reinigen.&lt;br /&gt;
* Die Wärmeleitwerte für eine Paste beziehen sich auf eine meist nicht genannte  aber trotzdem &#039;&#039;minimale&#039;&#039; Schichtdicke. Diese gelingt relativ reproduzierbar, wenn die Paste mit einem flachen Gegenstand (Rasierklinge, Lineal, ...) aufgebracht, verteilt und vorsichtig abgezogen wird, sodaß nur eine &#039;&#039;dünne&#039;&#039; Schicht auf dem [[Kühlkörper]] verbleibt. Dies erfordert einige Übung. Paste aufhäufeln, Bauteil eindrücken und befestigen erzielt bei weitem nicht die optimale Kühlleistung.&lt;br /&gt;
&lt;br /&gt;
== Zusätzliche Hinweise ==&lt;br /&gt;
&lt;br /&gt;
Anregungen oder Fragen auch gerne per Email an [http://www.mikrocontroller.net/user/show/powerfreak Powerfreak]. Dieser Artikel kann dadurch regelmäßig erweitert und ggf. durch ein FAQ ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
== Fußnoten ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[IGBT]]&lt;br /&gt;
* [[FET]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;br /&gt;
[[Kategorie:Leistungselektronik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=KiCad&amp;diff=61612</id>
		<title>KiCad</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=KiCad&amp;diff=61612"/>
		<updated>2011-11-13T22:12:44Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: 3D Export&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;KiCAD&#039;&#039;&#039; ist ein Open Source [[Schaltplaneditoren|Schaltplaneditor]] und PCB Layoutprogramm für Windows, Linux, Mac OSX.&lt;br /&gt;
&lt;br /&gt;
Diese Seite ist zunächst eine Zusammenfassung aus den KiCAD Beiträgen im Forum. Und gleich zu Anfang ein grosses DANKE an alle KiCAD-User aus dem Forum. Ihr seid zu viele, um jeden einzeln zu nennen. Aber wer sich diese Seite durchliest und den Links folgt, wird euch kennenlernen.  &lt;br /&gt;
&lt;br /&gt;
Hier sollen alte und neue KiCAD-Anwender einen Anlaufpunkt finden und neue, insbesondere µC-relevante Aktivitäten stattfinden. &lt;br /&gt;
&lt;br /&gt;
Diese Seite will keine Konkurrenz zum offiziellen KiCAD Wiki sein, d.h. was dort steht soll hier nicht wiederholt werden und was hier steht wird hoffentlich zum offiziellen KiCAD Wiki wandern.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr Kritik oder Fragen zu KiCAD habt, dann nutzt das Forum! Sobald KiCAD im Betreff steht, wird der Beitrag gelesen und nach Möglichkeit beantwortet. Auch Ideen zu dieser Seite sind sehr willkommen! &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Siehe auch die offizielle FAQ: http://kicad.sourceforge.net/wiki/index.php/FAQ&lt;br /&gt;
&lt;br /&gt;
TODO: Strukturierung (Allg., Schaltplan, Netlists, Module, Bibliotheken, Layout, Export, 3D)&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Warum gefällt dir KiCAD?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#584639&lt;br /&gt;
** http://www.mikrocontroller.net/topic/81396#680502&lt;br /&gt;
** http://www.mikrocontroller.net/topic/83311#697917&lt;br /&gt;
** http://www.mikrocontroller.net/topic/42614#321502&lt;br /&gt;
* Warum gefällt dir KiCAD nicht?&lt;br /&gt;
** Ich verstehe nicht, was du meinst ;-)&lt;br /&gt;
** http://www.mikrocontroller.net/topic/81396#680502&lt;br /&gt;
** http://www.mikrocontroller.net/topic/83311#697969&lt;br /&gt;
** Debian Lenny user können zur Zeit als aktuelleste Version nur die vom 05 Mai 2010 auf einfachem Wege nutzen. Grund: Dafür existiert ein gut funktionierendes Ubuntu 8.10 binary. Für aktuellere Versionen existiert kein direkt auf Debian lauffähiges Binary. Aus den Quellen compilieren ist auch nur den versiertesten möglich, weil die aktuellen Sourcen auf Launchpad liegen, dort über Bazaar (bzr) abzurufen sind, und Launchpad nicht das 1.5 bzr akzeptiert, das als Debian Package vorliegt. Es existiert zwar ein ausreichend aktueller Backport für Debian Lenny, aber der führt zu Packetkollisionen. Im Krieg Debian/Ubuntu steht KiCAD also auf Ubuntu Seite.&lt;br /&gt;
***Anmerkung: Mit Squeeze(testing) funktioniert KiCAD einwandfrei, Lenny ist mittlerweile zwei Jahre alt.&lt;br /&gt;
* Wo gibt es weitere Infos zu KiCAD?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/98034#848661&lt;br /&gt;
* Welche Leiterplattenfertiger akzeptieren KiCAD Layouts?&lt;br /&gt;
** http://www.pcb-pool.de KiCAD kann &amp;quot;Extended&amp;quot; Gerber RS-247-X erzeugen. Das wird von PCB-Pool aktzeptiert. Dabei http://www.pcb-pool.com/download/spezifikation/deu_cmso020_ext_gerber.pdf beachten! Alternativ, wer KiCAD (noch) nicht traut, diese RS-247-X in deren (PCB-Pools) Tool GC-Prevue  http://www.mikrocontroller.net/topic/120373#1092375 einlesen und als .GWK exportieren.&lt;br /&gt;
** http://fischer-leiterplatten.de Ohne Aufpreis für Gerber-Import  &lt;br /&gt;
* Wie geht man mit KiCAD-Trollen um?&lt;br /&gt;
** Mit gesundem Menschenverstand. Trollregeln wie die US AIR FORCE (http://blog.wired.com/defense/2009/01/usaf-blog-respo.html) brauchen wir nicht ;-)&lt;br /&gt;
* Wie kriege ich raus, welche Leiterbahn welchen Netznamen hat, bzw. ich habe den Überblick verloren und weiss nicht mehr, was aus dem Layout nun was im Schaltplan ist?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/218922#2211644&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
* Wie stellt man die Blattgrösse beim Schaltplan ein?&lt;br /&gt;
** In Page Settings die Blattgröße verstellen (zB von A4 auf A3) http://www.mikrocontroller.net/topic/33653#974295&lt;br /&gt;
* Wie kann man den Schaltplan auf mehreren Seiten verteilen (hierachical sheets)?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96060&lt;br /&gt;
** http://www.mikrocontroller.net/topic/117873#1060062&lt;br /&gt;
*Wie geht man mit &amp;quot;Power Pins&amp;quot; in hierachischen Schaltplänen um?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/207905#new&lt;br /&gt;
* Wie kann man die &amp;quot;hierachical sheets&amp;quot; benutzen, um aus vorgefertigten Subschaltplänen mit immer gleichen Bauteilgruppen rationell Schaltpläne zusammenzustellen (Building Blocks)?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/175597#1687653&lt;br /&gt;
** http://www.mikrocontroller.net/topic/178683#1724114&lt;br /&gt;
*Wie geht man mit Bussen um?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/208870#new&lt;br /&gt;
** und speziell bei hierachischen Schaltplänen: http://www.mikrocontroller.net/topic/209156#new&lt;br /&gt;
* Wie kann man Schaltplanentwurf (KiCAD) und Schaltungssimulation (Spice) verbinden?&lt;br /&gt;
* Ein Tutorial zum Symboleditor für KiCAD, mit dem die Symbole für das Schaltplanmodul (EEschema) erzeugt bzw. editiert werden, findet sich hier: [[Media:SymboleFuerKiCad318082009-RevC-DE.pdf]].&lt;br /&gt;
* Wie kann man im Schaltplan Symbole zum Verschieben gruppieren?&lt;br /&gt;
** Siehe http://www.mikrocontroller.net/topic/170913#&lt;br /&gt;
* Wie wird man den merkwürdigen Rahmen los?&lt;br /&gt;
** 1) Beim Ausdrucken Frame deaktivieren.&lt;br /&gt;
** 2) Als SVG exportieren/plotten. Liegt es als SVG vor, mit einem geigneten Grafikprogramm, z.B. Inkscape, den Rahmen löschen.&lt;br /&gt;
&lt;br /&gt;
=== Netlist ===&lt;br /&gt;
* Was genau muss man beim Übergang vom Schaltplan (SCH) zum Layout (BRD) machen?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/33653#898771&lt;br /&gt;
** http://www.mikrocontroller.net/topic/39243#290309&lt;br /&gt;
** http://www.mikrocontroller.net/topic/39243#891530&lt;br /&gt;
* Kann man fertige Netzlisten für Gruppen von Bauteilen einbinden?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/33653#1462871&lt;br /&gt;
* Kann man Daten für automatische Bestückung erzeugen?&lt;br /&gt;
** Ja. aber nicht in CVpcb für die Symbol &amp;gt; Footprint Zuordnung, sondern im Layout Modul PCBnew.&lt;br /&gt;
* Was bedeuten die Maßangaben in der Netlist?&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
* Wie stellt man die Rastergrösse im Layout ein?&lt;br /&gt;
** Mit der Rechten Maustaste in das Board klicken. Es poppt ein Menue auf. Dort Raster wählen..... Geht im Modul-Editor genauso.&lt;br /&gt;
* Wie füllt man eine Fläche aus?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/93131#854802&lt;br /&gt;
** Etwas aktueller: http://www.mikrocontroller.net/topic/182271#1772119 Zweiter Teil des Posts.&lt;br /&gt;
* Wie werden Pads und Leiterbahnen verbunden?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/119755#1081455&lt;br /&gt;
** aktueller: http://www.mikrocontroller.net/topic/220733#new&lt;br /&gt;
* Ich bekomme immer eine Fehlermeldung vom DRC, das ein Pad nicht angeschlossen ist, aber ich habe es angeschlossen.&lt;br /&gt;
** http://www.mikrocontroller.net/topic/204717#2018724&lt;br /&gt;
* Ich will ein Bauteil für geringeren Leiterwiderstand sowohl auf der Unterseite- als auch der Oberseite anschliessen. KiCAD löscht aber immer den alten Leiterbahnzug, wenn ich den neuen lege. &lt;br /&gt;
** Deaktiviere unter Einstellungen-&amp;gt;Allgemein das &amp;quot;auto-entfernen-von-Leiterbahnen&amp;quot; (einfachste Lösung). &lt;br /&gt;
** Alternativ: Designe dafür Bauteile mit speziellen Pads. http://www.mikrocontroller.net/topic/187606#1823596 (realistischste u. sauberste Lösung, aber etwas umständlich.)&lt;br /&gt;
* Wie kann man ein Bauteil mit Pads und Leiterbahnen bewegen? &lt;br /&gt;
** http://www.mikrocontroller.net/topic/118539#1067219&lt;br /&gt;
* Wie bekommt man ein vernünftiges Boardoutline hin?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96060#1057511 &lt;br /&gt;
* Wie erstellt man eine Befestigungsbohrung?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/179308#1726990&lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1122219 ?????&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
** Anzeige im Layout: Layer &amp;quot;Zeichnung&amp;quot; anwählen. In der rechten Menueleiste &amp;quot;Bemaßung hinzufügen&amp;quot; wählen. Das ist der fünfte Button von unten mit der &amp;quot;blauen Bemaßung&amp;quot;. Jetzt an einer Stelle links ins Layout klicken. Maus verschieben und noch einmal links klicken und die Maus seitlich verschieben. Es wird ein Maßpfeilsystem zwischen erstem und und zweitem Mausklick angelegt, deshen höhe man mit der Maus einstellen kan. Ein weiterer linker Mausklick fixiert das System. Das Anklicken der Beschriftung mit der rechten Maustaste erlaubt das Editieren. Das System wird immer in der Einheit angelegt, die in der linken  Menueleiste vorgewählt wurde. Die Rasterung der aktuellen Einstellung wird auch übernommen. Späteres Ändern von Einheit- und Raster ändern die Beschriftung nicht mehr. In 3D und im Footprint geht diese Möglichkeit nicht.&lt;br /&gt;
** Weitere Möglichkeiten: Einen Maßstab als footprint/Modul anfertigen und zum Messen in das Board einfügen.&lt;br /&gt;
** Wenn man im Layout aber direkt etwas ausmessen möchte, so geht das über den relativen Nullpunkt. Unten im Rahmen rechts sind vier Felder. Die beiden linken zeigen die absoluten Koordinaten, an, die beiden rechten die relativen Koordinaten in Bezug auf einen relativen Nullpunkt. Defaultmäßig stimmen absoluter und relativer Nullpunkt ersteinmal überein. Per &amp;quot;Space bar&amp;quot; drücken setzt Du den relativen Nullpunkt an den Ort des Mauszeigers. Wenn Du nun die Maus verfährst, zeigen die relativen Koordinaten nun den vertikalen und horizontalen Abstand zum Nullpunkt. Die Diagonale muss leider über den Pythagoras selber ausgerechnet werden, oder indem man die Polarkoordinateneinstellung wählt (linke Menueleiste). Durch geschicktes setzten des Nullpunktes kann man nun auf der Platine herummessen. Winkel können auch über die Polarkoordinateneinstellung gemessen werden. Im Moduleditor geht das analog. Das 3D-View kann zur Zeit (Jannuar 2011) überhaupt keine Bemaßung.     &lt;br /&gt;
* Wie kann man mit der KiCAD Version 20100314 &#039;&#039;&#039;einseitige&#039;&#039;&#039; Platinen erstellen?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/172015#1651239&lt;br /&gt;
** aktueller: http://www.mikrocontroller.net/topic/172015#1794699&lt;br /&gt;
*Und wie teile ich KiCAD mit, daß der Autorouter nur eine Seite verwenden soll?&lt;br /&gt;
** Auf die doofe Tour: Erst in KiCAD zweiseitig wählen, und dann beide Lagen im Autorouter als &amp;quot;Unterseite&amp;quot; wählen.&lt;br /&gt;
* Wie kann man den Nullpunkt eines Layouts verschieben?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/179680#1730452 für den Layout Editor PCBnew. Im Moduleditor bei Erstellung eines Footprints kann man den Ankerpunkt frei Mithilfe des Anker-Tools aus der rechten Menüleiste (das Ankersymbol) setzten. Gleiches gilt für den Symboleditor.&lt;br /&gt;
* Wie gehen runde Bögen in KiCAD?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/202512#1994063 &lt;br /&gt;
* Ich habe mein Board fertig geroutet, stelle aber jetzt fest, das ich noch einige Leiterbahnbreiten ändern muss. Wie geht das am einfachsten?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/205851#new&lt;br /&gt;
*Ich kann Pads nicht anschlissen bzw. ich bekomme vom DRC Fehlermeldungen, daß ich Pads nicht angeschlossen habe, obwohl sie angeschlossen sind.&lt;br /&gt;
**http://www.mikrocontroller.net/topic/204717#new&lt;br /&gt;
&lt;br /&gt;
=== Module Editor ===&lt;br /&gt;
* Wie erstellt man Footprints für Bauteile?&lt;br /&gt;
* Kann man im Module Editor die Eigenschaften aller Pads gleichzeitig ändern?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/93131#799550 &lt;br /&gt;
* Ich brauche einen Footprint, bei dem mehrere Pads verbunden sind, will aber nicht im Schaltplan zig Pins aufführen und anschliessen müssen.&lt;br /&gt;
**http://www.mikrocontroller.net/topic/208982#new&lt;br /&gt;
**http://www.mikrocontroller.net/topic/204717#new&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
&lt;br /&gt;
=== 3D-Ansicht ===&lt;br /&gt;
* Kann man die 3D-Ansicht in ein 3D-CAD Programm exportieren? &lt;br /&gt;
**http://www.mikrocontroller.net/topic/203388#new&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
&lt;br /&gt;
Da KiCAD in Punkto 3D-Ansicht komplett auf Wings3D beruht, und die 3D Modelle der Bauteile wrl-files sind, die mit Wings3D (oder Blender) erstellt werden können, sei hier auf ein Wings3D Handbuch verwiesen: http://www.oortman3d.com/wings3d/TheWings3dHandbook.pdf&lt;br /&gt;
&lt;br /&gt;
Viele Bauteilhersteller (vor allem von eher mechanischen, wie z.B. Stecker, Buchsen, Befestigung...) bieten fertige 3D-Modelle an. Diese sind meistens in den Formaten STEP oder IGES. So kann man diese in das von KiCAD benötigte .wrl (VRML 2.0) konvertieren:&lt;br /&gt;
# STEP oder IGES in [http://gcad3d.org/ gCAD3D] öffnen (File &amp;gt; Open Model)&lt;br /&gt;
# als Wavefront .obj speichern (File &amp;gt; Save Model as &amp;gt; OBJ)&lt;br /&gt;
# Das .obj in [http://www.wings3d.com/ Wings 3D] importieren (File &amp;gt; Import &amp;gt; Wavefront .obj)&lt;br /&gt;
# Als VRML 2 exportieren (File &amp;gt; Export &amp;gt; VRML 2.0 .wrl)&lt;br /&gt;
# Im KiCAD-Moduleditor die .wrl-Datei als 3D-Modell auswählen&lt;br /&gt;
# Eventuell muss man die Skalierung und Positionierung anpassen, die angezeigten Pads und Löcher helfen dabei. Die am meisten benötigten Faktoren dürften dabei 0,3937 und 2,54 sein - bei den Konvertierungen kommt leicht die Einheit Zoll oder cm durcheinander.&lt;br /&gt;
&lt;br /&gt;
Eine andere Möglichkeit .obj oder .stl-Dateien aus STEP und IGES zu erzeugen ist [http://free-cad.sourceforge.net/ FreeCAD]. Obwohl es auch .wrl direkt erzeugen kann, können diese nicht in KiCAD geladen werden. Der Umweg über .obj oder .stl und Wings 3D löst dies aber auch hier.&lt;br /&gt;
&lt;br /&gt;
Wenn man das Board wieder in einem CAD-Programm verwenden will um z.B. ein Gehäuse zu konstruieren, sollte man wieder STEP-Dateien erzeugen. Neuere KiCAD-Versionen können zwar VRML exportieren, doch das beschreibt nur Umrisse und keine Körper (Solids). CAD-Programme zum Gehäusedesign brauchen jedoch letzteres. So geht die Konvertierung:&lt;br /&gt;
# VRML aus KiCAD exportieren (File &amp;gt; Export &amp;gt; VRML)&lt;br /&gt;
# .wrl-Datei mit Hilfe von [http://www.cs.princeton.edu/~min/meshconv/ meshconv] in eine STL-Datei konvertieren: &amp;lt;code&amp;gt;meshconv boardname.wrl -c stl -o boardname.stl&amp;lt;/code&amp;gt;&lt;br /&gt;
# Die STL-Datei mit [http://www.solveering.com/products/products_stl2step.html stl2step] in eine STEP-Datei konvertieren&lt;br /&gt;
&lt;br /&gt;
Man sollte hinterher im CAD nochmal genau die Maße kontrollieren. Denn die Konvertierung von STL nach STEP ist nur eine Approximierung und keine exakte, verlustfreie Konvertierung.&lt;br /&gt;
&lt;br /&gt;
=== Drucken / Export ===&lt;br /&gt;
* Wie exportiert man den Schaltplan oder das Layout als Bild (PNG o.ä.)? &lt;br /&gt;
** Drucken über Postscript-Treiber und Umwandeln mit Ghostscript&lt;br /&gt;
** [http://www.mikrocontroller.net/topic/96060#1061492]&lt;br /&gt;
** Plot to Clipboard [http://www.mikrocontroller.net/topic/117562#1056566]&lt;br /&gt;
* Wie kann ich GENAU ausdrucken? Mein Ausdruck auf ABC ist ca. X % zu klein oder Y% zu groß! &lt;br /&gt;
** So genau sind einfache Drucker bzw. Druckertreiber selten. Aber meistens hilft folgendes: Mache einen 1:1 (100%) Probeausdruck. Messe auf dem Ausdruck nach, wie groß er tatsächlich geworden ist. Berechne die Abweichung und gebe sie in den Drucker bzw. Druckertreiber unter Einstellung ein, vorausgesetzt, der Drucker bzw. Druckertreiber kann das. Mit dem Wert machst Du wieder eine Probeausdruck, messe wieder nach, und wenn es mit der Einstellung funktioniert hat, kannst Du Deine Folie bedrucken. Wenn das nicht klappen kann, weil Du stark abweichende Werte für horizontal und vertikal bräuchtest, aber der Drucker nur einen gleichen Wert für beides kennt, hast Du einen (zu) schlechten Drucker. Trozdem nicht verzweifeln, weil KiCAD beim Drucken oder Plotten in der X- und Y-Achse getrennt skalieren kann. Aber Vorsicht bei Weitergabe der so erzeugten Dateien: Sie sind individuell auf einen Drucker angepasst, und produzieren auf einem anderen Drucker nur falsch skalierte Ausdrucke. Weil der Wert von Drucker zu Drucker unterschiedlich ist, ist es auch sinnvoll, diese Skalierung direkt am speziellen Drucker/Druckertreiber zu machen. Tipp: Wenn Du den Wert erfolgreich ermittelt hast, so kleb Dir einen Zettel auf den Drucker mit dem Wert. Die Werte sind zwar individuell für jeden Drucker, aber meistens für den speziellen Drucker durchaus fix. Und Du hast ihn sofort wieder parat, wenn der Drucker resettet wurde. Dies ist übrigens ein allgemeiner Tipp für das Ausdrucken, der auch für Eagle, Target, Altium usw. gilt.&lt;br /&gt;
* Kann man Gerber-Dateien exportieren?&lt;br /&gt;
** Ja. Es wird Gerber 247X exportiert. Einheit ist inch (doppelt sowohl im 247d als auch im 247x Stil definiert). Die Y-Koordinaten sind im allgemeinen negativ. KiCAD verwendet für Flächen das in Gerber spezifizierte Polygon Makro und kein &amp;quot;stroke fill&amp;quot;.&lt;br /&gt;
** Bei Bestellungen bei PCB-Pool ist deren GC-Prevue erforderlich [http://www.mikrocontroller.net/topic/120373#1092375]&lt;br /&gt;
* Wie kann man den Gerber-Plot so ausdrucken, dass in der Mitte von Pads und Vias ein Zentrierloch frei bleibt?&lt;br /&gt;
** http://article.gmane.org/gmane.comp.cad.kicad.user/3457&lt;br /&gt;
* Wie kann man das Layout invers ausdrucken, d.h. alle Leiterbahnen und Pads müssen weiß bleiben, der Rest wird schwarz ausgedruckt?&lt;br /&gt;
** Beim Plotten den Haken bei Negativ-Plot setzen [http://www.mikrocontroller.net/topic/156202#1474507]&lt;br /&gt;
* Ich habe irgendwie Probleme mit dem Ausdrucken.&lt;br /&gt;
** Verzerrt: http://www.mikrocontroller.net/topic/207764#new&lt;br /&gt;
** Sonderzeichen: http://www.mikrocontroller.net/topic/207310#new&lt;br /&gt;
&lt;br /&gt;
=== Import ===&lt;br /&gt;
* Kann man EAGLE Dateien importieren? (=&amp;gt; Obacht bei Weitergabe der Daten!)&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#797416&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#797486&lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1089933&lt;br /&gt;
* Wie bindet man fremde KiCAD Bibliotheken ein?&lt;br /&gt;
** EESchema (Schaltplaneditor) starten, unter Einstellungen &amp;quot;Bibliothek&amp;quot;  auswählen, auf &amp;quot;Hinzufügen&amp;quot; klicken, neue Bibliothek auswählen dann &amp;quot;öffnen&amp;quot; und in der Projektdatei &amp;quot;Speichern&amp;quot;. Gültig für Version 20090216Final, 2011-04-29-BZR2986-WinXP&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen sichern / wiederherstellen===&lt;br /&gt;
* Wo speichert KiCAD die Einstellungen ab und wie lassen sich die originalen Einstellungen wiederherstellen?&lt;br /&gt;
** [[http://kicad.sourceforge.net/wiki/index.php/DE:KiCadHB#Einstellungen_sichern_.2F_wiederherstellen]]&lt;br /&gt;
**Man erstelle ein neues Projekt beliebigen Namens, nehme alle Einstellungen (Bibliotheken, Pfade usw.) vor und speichere diese in der aktuellen Projektdatei &amp;quot;name.pro&amp;quot;. Im Ordner KiCAD Verzeichnis ....../kicad/share/template befindet sich eine Datei &amp;quot;kicad.pro&amp;quot;. Diese Datei &amp;quot;kicad.pro&amp;quot; ist die &amp;quot;Musterprojektdatei&amp;quot;, die für alle neuen Projekte verwendet wird. Man benenne sie um in &amp;quot;kicad-orig.pro, und kopiere die aktuelle Projektdatei &amp;quot;name.pro&amp;quot; nun als &amp;quot;kicad.pro&amp;quot; in diesen Template-Ordner. Leider Funktioniert dieses Verfahren nicht in allen KiCAD Versionen. Den originalen Zustand stellt man wieder her, indem man &amp;quot;kicad.pro&amp;quot; umbenennt, und &amp;quot;kicad-org.pro&amp;quot; wieder in &amp;quot;kicad.pro&amp;quot; zurückumbenennt.&lt;br /&gt;
&lt;br /&gt;
=== Bitmaps als Symbol oder Footprint importieren ===&lt;br /&gt;
Der Programmteil Bitmap2component wandelt Bitmaps wahlweise in Symbole oder in Footprints um. Auf diese Weise können also auch Logos oder spezielle Muster für HF-anwendungen in KiCAD importiert werden, sobald sie als Bitmap vorliegen. Diese Funktion ist allerdings sehr neu (im Frühjahr 2011 eingefügt) und eher als experimentell zu bezeichnen. So funktioniert z.B. der Export in ein Symbol in der Version BZR-2986 NICHT.&lt;br /&gt;
&lt;br /&gt;
== Tipps&amp;amp;Tricks / Eigenheiten / Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Nachbearbeitung mit Skript oder Texteditor (Pin Swapping, Versionskontrolle via SVN, Generierung von Packages aus UCF-Listen) &lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1100467&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96860#836967&lt;br /&gt;
** http://stawoo.com/dokuwiki/doku.php?id=ecld:kicad:board&lt;br /&gt;
&lt;br /&gt;
* Schaltplan: Durchnummerieren von GND und PWR erforderlich http://www.mikrocontroller.net/topic/39243#290309&lt;br /&gt;
&lt;br /&gt;
* Zum Verbinden von Schaltplan und Layout müssen an den Bauteilen die Pinnummern mit den Padnummern der Footprints korrespondieren. Das ist &amp;quot;defaultmäßig&amp;quot; nicht immer zu erreichen, weil es unterschiedliche Nummerierungssysteme gibt. Ausser dem Anlegen eines speziellen Footprints kann diese Anpassung für einzelne Bauteile wärend des Layoutens im Moduleditor vorgenommen werden. http://www.mikrocontroller.net/topic/186121#1805890&lt;br /&gt;
&lt;br /&gt;
* In PCBnew lassen sich mit &amp;quot;Datei&amp;gt;Platine hinzufügen&amp;quot; auch schon geroutete Gruppen von Bauteilen quasi als Modul einfügen, wenn sie zuvor als Board abgelegt wurden. Ebenso kann eine Bauteilgruppe, die in der Form mehrmals vorkommt, und die die schon einmal geroutet worden ist, gruppiert, kopiert und wiederverwended werden. Die dazu nötige Annotation und das Löschen der überzähligen Bauteile muss aber sorgfältig von Hand gemacht werden. &lt;br /&gt;
&lt;br /&gt;
* Bibliotheken verwalten, umsortieren bzw. neu strukturieren: http://www.mikrocontroller.net/topic/187107#1817559 &lt;br /&gt;
&lt;br /&gt;
* Layout: Rest-Gummiband an Pins http://www.mikrocontroller.net/topic/120373#1092375&lt;br /&gt;
&lt;br /&gt;
* Produktion: http://www.mikrocontroller.net/topic/98034#848965&lt;br /&gt;
&lt;br /&gt;
* Bug in Version 2010-03-14: Unter Einstellungen lässt sich keine einseitige Platine wählen (wichtig für Autorouter). Lösung: Modifikation des .brd Files mit einem Editor [http://www.mikrocontroller.net/topic/172015#1651239]:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&lt;br /&gt;
:In der *.brd Datei gleich ganz oben...&lt;br /&gt;
:&lt;br /&gt;
:$GENERAL&lt;br /&gt;
:LayerCount 2                 -&amp;gt; auf 1 setzen&lt;br /&gt;
:&lt;br /&gt;
:$SETUP&lt;br /&gt;
:InternalUnit 0.000100 INCH&lt;br /&gt;
:ZoneGridSize 250&lt;br /&gt;
:Layers 2                     -&amp;gt; auf 1 setzen&lt;br /&gt;
:Layer[0] Rückseite power&lt;br /&gt;
:Layer[15] Vorderseite power  -&amp;gt; hab&#039; ich mal beides so gelassen&lt;br /&gt;
:&amp;lt;/pre&amp;gt;                                                                aktueller: http://www.mikrocontroller.net/topic/172015#1794699&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kühlkörper&#039;&#039;&#039; können als Symbol und Footprint (Modul) angelegt werden. Die Befestigungslöcher können im  Modul als Pad ausgeführt werden. Die Padnummer aller Pads sollte gleich sein (gleicher Anschluss / über Kühlkörper verbunden), z.B. &amp;quot;1&amp;quot;. Entsprechend ein Symbol mit Pin und korrespondierender Pinnummer anlegen. Wenn der Kühlkörper elektrisch nirgendwo verbunden sein soll, dann die Anschlusspinne im Schaltplan als &amp;quot;unused&amp;quot; markieren. Als Referenz in Symbol und Footprint habe ich &amp;quot;HS&amp;quot; (HeatSink) gewählt. Es ist zu überlegen, ob &amp;quot;HS&amp;quot; nicht auch als Padnummer besser wäre.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kartenumrisse/Outlines&#039;&#039;&#039;: Für immer wiederkehrende Platinengrössen, z.B. die beliebte Eurokarte, kann zur Vereinfachung des Zeichnens einmal ein Eurokartenumriss im Layer &amp;quot;outlines&amp;quot; gezeichnet werden, und als Modul abgelegt werden. Um die Zahl der Kollisionen beim Einlesen der Netzliste zu verringern, wird im Schaltplan ein Dummy-Symbol ohne Pinne angelegt. In CVpcb dann dieses Symbol mit dem passenden Kartenumriss Footprint/Modul verbinden, und es wird automatisch in PCBnew eingefügt. Als Referenz in Symbol und Footprint habe ich &amp;quot;Outl&amp;quot; (OUTLine) gewählt.&lt;br /&gt;
&lt;br /&gt;
=== Tipps&amp;amp;Tricks: Building Blocks ===&lt;br /&gt;
* Eine unfertige Dokumentation, wie man das hierarchische Schaltplansystem von KiCAD verwendet, um daraus schnell und rationell Schaltpläne mit vorgefertigten Schaltplänen (Building Blocks) nach dem Baukastensystem aufzubauen. Enthält auch ein Beispielprojekt. Beachte die Liesmich.txt Datei. [[Media:BuildingBlocksKiCAD-EXPERIMENTELL.zip]] Das File  KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA_Vorlaeufig.pdf, enthält eine vorläufige Beschreibung dazu. KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA-EN.pdf is an English description how to use hirarchical schematics as building blocks for a fast and rationel schematic design. Es fehlt noch die Übersetzung und die Bebilderung und ein paar Berichtigungen und Ergänzungen. ;-) . Das echte Hauptbeispielprojekt ist UnderVoltageDetector24V-2Group_Experimental.pro bzw. UnderVoltageDetector24V-2Group_Experimental.sch. Im Ordner Experimentalprojekt23052010 findet sich ein weiterer Ordner BuildingBlocksExperimental. Dieser enthält die Ausgangsbausteine VoltageRegulatorBuildingBlock.sch mit VoltageRegulatorBuildingBlock-cache.lib und  VoltageDetectorBuildingBlock.sch mit VoltageDetectorBuildingBlock-cache.lib. Die Projektdateien der Buildingblocks .pro sind nur der Vollständigkeit und zur leichteren Bearbeitung zugefügt. Aus VoltageDetectorBuildingBlock.sch und VoltageRegulatorBuildingBlock.sch wurde (nach umkopieren, umbenenen und kleiner Änderung) im übergeordneten Ordner das Projekt VoltageRegulatorBuildingBlock.pro unter verwendung des &amp;quot;Zwischenbuildingblocks&amp;quot; UnderVoltageDetectorBuildingBlock.sch zusammengesetzt. NICHT VERGESSEN DIE CACHE.LIB EINZUBINDEN! Sonst gibt es nur Fragezeichen statt Bauteile. Das Beispielprojekt enthält eine 24V Unterspannungsüberwachung für einen Bleiakku, die zwei 12V Gruppen überwacht. Nicht elegant, aber hoffentlich robust. Autor: Bernd Wiebus , GNU-GPL. Der dazubezügliche Beitrag im Forum ist: http://www.mikrocontroller.net/topic/178683#1724114&lt;br /&gt;
*[[Media:BuildingBlocks_06Jul2010.zip]] enthält eine Sammlung von gängigen Schaltungen mit den Längstreglern LM317 /LM78xx /LM79xx und dem Timer 555, die nach dem in obig erwänten Dokument KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA_Vorlaeufig.pdf beschriebenen Vorgehen als Building Blocks in KiCAD verwendet werden können. Autor: Bernd Wiebus, Lizenz: Creative Commons. Experimentell! Ohne Garantie! Mit Vorsicht geniessen!&lt;br /&gt;
&lt;br /&gt;
== Bibliotheken ==&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt sollen unsere Arbeiten an Bibliotheken koordiniert werden. Dabei sollen alle Arbeiten unter der Creative Commons Lizenz stattfinden. Das heisst insbesondere, dass keine Arbeiten mit anderem Copyright unseren Bibliothekspool vergiften sollen z.&amp;amp;nbsp;B. durch unerwünschte Konvertierung von EAGLE-Bibliotheken.  &lt;br /&gt;
&lt;br /&gt;
Unsere Designziele sind:&lt;br /&gt;
* Frei benutzbar (Creative Commons Lizenz) &lt;br /&gt;
* Einheitlich (Richtlinien?)&lt;br /&gt;
** Vorschlag von Marko für Bohrungen und Pads siehe [http://www.mikrocontroller.net/topic/124070#1176177]&lt;br /&gt;
* Fehlerfrei (Nachkontrolle durch andere User)&lt;br /&gt;
&lt;br /&gt;
=== Wünsche ===&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Strichliste geführt werden, welche neuen Bauteile gesucht sind bzw. welche oder besseren, genaueren Versionen benötigt werden. Bitte gebt an, was bei bestehenden Bauteilen problematisch ist.&lt;br /&gt;
&lt;br /&gt;
Bevor wir Bibliotheken erstellen, sollten auf jeden Fall einige Parameter - insbesondere für die Schaltplansymbole - festgelegt werden: Pinlänge, Pinabstand, Größe der Schriften, Konventionen bzw. Nummerierung (z.B. bei gepolten Bauteilen wie Dioden, Elkos usw.). Sonst entsteht Wildwuchs, weil jeder für sich anderes festlegt.&lt;br /&gt;
&lt;br /&gt;
* Stehende Layouts für 7805 und N-FETs: |||&lt;br /&gt;
** Passt TO220_VERT ? Natürlich! Nur die Anschlussnumerierung muss ev. passend adaptiert werden.&lt;br /&gt;
* LPC21xx / LPC22xx / LPC23xx |&lt;br /&gt;
* EINE AVR ATmega-Bibliothek, wo ALLE Controller drin sind. ||||&lt;br /&gt;
* AT90CAN128 / allgemein mehr AVRs (MEGA &amp;amp; TINY) ||||&lt;br /&gt;
* Schaltregler (u.A. LM257x, LM267x, MC33063, L5973D) ||&lt;br /&gt;
* Spulen (z.&amp;amp;nbsp;B. diverse Wuerth) |&lt;br /&gt;
* Drosseln (B82790 für CAN, Würth 744207) |&lt;br /&gt;
* Ferrite (7427930 - 32, 742792651, 74279263) |&lt;br /&gt;
** ??? Was genau ist nun Footprint und Referenzmaeßig der Unterschied zwischen Drosseln, Spulen und Ferriten, wenn ich jetzt mal davon ausgehe, das die Teile weder Anzapfung noch mehr als eine Wicklung haben (dann wären es Trafos oder Uebertrager), und die elektrischen Werte in ein Feld eingetragen werden?? Wenn Through-Hole langt, schau mal unten in KiCAD-Modules-Footprints-discrete_28Mar2010.zip. Kleinere SMD-Entstörferrite lassen sich uebrigens aus SMD-Widerstaenden zaubern, in dem man sie umbenahmt und mit der Referenz &amp;quot;L&amp;quot; versieht. ;-)&lt;br /&gt;
* STM32 Mikrocontroller Bibliothek (sofern möglich alle) |&lt;br /&gt;
&lt;br /&gt;
=== Entwürfe ===&lt;br /&gt;
&lt;br /&gt;
Neue Bibliotheken oder Änderungen sollen zunächst in diesem Abschnitt &lt;br /&gt;
vorgestellt werden. &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96460#832961 ATmega3250/TQFP100] von Fred S. (Gast)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96460#844741 ATMega3290 im 100Pin-Gehäuse] von Fred S. (Gast)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/132811#1205130 RFM12-Funkmodul] von Dominik C.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/133310#1210137 CAN Controller MCP2515 und Transceiver MCP2551] von Dominik C.&lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevB-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1. Schaltplan Symbolbibliothek fuer KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind. Von Bernd Wiebus&lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevC-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind. Aenderung gegenueber Rev.B: Kleinere Symbole hinzugefügt. Mit Vorsicht geniessen! Von Bernd Wiebus. &lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevD3-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind.  Aenderung gegenueber Rev.C: Kleinere Fehler beseitigt. CLD Symbol hinzugefuegt. Kuehlkoerper Symbol und Dummy-Symbol fuer Boardoutlines hinzugefuegt. Thyristor und Triac Symbol zugefuegt. Copyright Symbole GNU-GPL und CC zugefuegt. Mit Vorsicht geniessen! Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de &lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevE4.lib]] AKTUELLE Version! Ersetzt die Rev. B, C und die Rev. D sowie Vorgängerversionen E1-E3! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind.  Aenderung gegenueber Rev.D: Kleinere Fehler beseitigt. Ankerpunkte in die Nähe der Symetrieachsen verlegt. Verbinder DIN41612 / EN60603-2 &amp;quot;Eurokartenstecker&amp;quot; hinzugefügt. Große &amp;quot;BIG&amp;quot; Symbole entfernt und in der Datei BIG-SymbolsSimilarEN60617+oldDIN617-RevE.lib ausgelagert. Mit Vorsicht geniessen! Von Rene Belau und Bernd Wiebus. Unter GNU GPL. Defektes Symbol &amp;quot;RESISTOR_RevE_Date15jun2010&amp;quot; repariert am 02. Maerz 2011. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de   &lt;br /&gt;
* [[Media:BIG-SymbolsSimilarEN60617+oldDIN617-RevE.lib]] Einige EN60617 oder der DIN 617 ÄHNLICHE Symbole in besonders GROSSER Ausführung. Vermutlich werden Sie diese GROSSEN Symbole eher NICHT benutzen wollen. Mit Vorsicht geniessen! Von Rene Belau und Bernd Wiebus. Unter GNU GPL. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[http://www.mikrocontroller.net/attachment/74203/obi.lib]] KiCAD Symbol für einen ATMEGA644. Von obi&lt;br /&gt;
* [[Media:Symbols_ICs-Diskrete_RevC.lib]] KiCAD Symbole für einige diskrete ICs. Enthält L200 (Pentawatt Gehäuse), LM2587 (Pentawatt Gehäuse), LM317, LM78xx, LM79xx, NE555, TDA2003 (Pentawatt Gehäuse), UC38xx (DIP8/SO8 und PIP14/SO14), MIC4422 (DIP8/SO8 und Pentawatt Gehäuse). MAX756 und MAX757. Autor Rene Belau und Bernd Wiebus. GNU GPL. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Symbols_ICs-Opto_RevB_06Apr2011.lib]] KiCAD Symbole für Optokoppler CNY17, IL300. IL388, TLP250, SFH617A-1, SFH617A-2, SFH617A-3, SFH617A-4, KPC357, LTV35x, und PC357. LWL Empfänger Toshiba TORX170 TORX173 TORX193  und TORX194 (Toslink). LWL Sender Toshiba TOTX170 TOTX173 TOTX193  und TOTX194 (Toslink). LWL Empfänger Agilent HFBR-252x und Sender Agilent HFBR-152x Serie (Versatile Link). Autor Rene Belau und Bernd Wiebus. GNU GPL. Mit VORSICHT geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Transformer-Diskrete_RevA.lib]] KiCAD Symbole für einige diskrete Transformatoren. Coilcraft Q4434-B = Rhombus T1311 und Myrra-74040 ETD29. Autor: Bernd Wiebus. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Symbols_DCDC-Converter_RevB_06Apr2011.lib]] KiCAD Symbole für einige DCDC-Converter. Enthält CINCON EC5BC12, CINCON EC6C11, TRACO TED-1212, TRACO TED-XXXX Dual Output, TRACO TED-XXXX Single Output, TRACO TEN10-1212, TRACO TEN10-XXXX, TRACO TME-XXXX, TRACO TMH-XXXX Single Output, TRACO TMH-XXXX Dual Output, BOTHHAND CF-Serie und DELTA DPS05U09D. Autor: Bernd Wiebus. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD_Module_Footprints_21Apr2011.zip]] Eine Sammlung von KiCAD Modulen bzw. Footprints diskreter Bauteile. Neben den obligatorischen Rs, Cs und Ls sind Schrack und Omron Kartenrelais (die Footprints passen auch fuer andere Hersteller), diverse Dioden, Klemmen WAGO 236 (RM 5mm) Serie und WAGO 734 Serie, Sicherungshalter (Schurter und Bulgin), Kuehlkoerper und Eurokartenoutlines enthalten. Zusaetzlich TO92, TO220, TO220-5 (Pentawatt) und TO247 Gehaeuse. Ebenso die vermissten PISN und PISR SMD Drosseln. Einige Throughhole C&amp;amp;D Bobin Drosseln, Bourns 3296, Spectrol Type 43 / Econtrim und Piher PT15 Trimmer . Potentiometer Alps RK16 und Spectrol Type 148/149. Transformatoren Coilcraft Q4434-B / Rhombus T1311 sowie ETD29 von Epcos und Myrra sind auch dabei. Eurokartenstecker/-buchsen DIN 41612 Typ B1, B2, C1, C2 und C3. Ebenfalls enthalten: GNU-GPL und Creative Commons  Symbole. Dazu Messpunkte. BNC-Buchse, Quarzoszillator, SMD Widerstände und Kondensatoren.  (0805, 1206, 2512) sowie experimentelle Universalfootprints SMD/Throughole. SMD-Dioden: MELF, Mini-MELF, SMA, SMB und SMC. Neu in der Version vom 27 Juni 2010: Stecker Molex Serie KK, Würth SMD Drosseln und Doppeldrosseln. Alles ohne 3D Modelle, aber manchmal mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD-Module_Buzzer_Beeper_RevA_25Oct2010.zip]] Einige Footprints von Summern /Buzzern / Beepern für KiCAD. Enthaelt Kingstate KCG0601, Pro Signal ABI-009-RC, Pro Signal ABI-010-RC, Pro Signal ABT-410-RC, Star Micronics HMB-06/HMB-12 und Projects Unlimited AI-4228-TWT-R. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD-Module_CommonModeChokes_Wuerth_WE-CMB-Series_RevA_25Oct2010.zip]] Footprints der Gleichtaktdrosseln der Serie Würth WE CMB (through hole) für KiCAD. Enthält die Verschieden Bauformen XS, S, M, L, XL und XXL. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:DCDC-Converter_RevB_06Apr2011.zip]] Footprints von DCDC-Convertern für KiCAD. Enthält CINCON EC5BC12, CINCON EC6C11, TRACO TED-1212, TRACO TED-XXXX Dual Output, TRACO TED-XXXX Single Output, TRACO TEN10-1212, TRACO TEN10-XXXX, TRACO TME-XXXX, TRACO TMH-XXXX Single Output, TRACO TMH-XXXX Dual Output, BOTHHAND CF-Serie und DELTA DPS05U09D. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:Opto-Devices_RevC_30Apr2011Amendet02Jul2011.zip]] Footprints von Optoelectronischen Bauteilen für KiCAD. Enthält 6 Polige DIL Footprints für CNY17, auch in &amp;quot;wide&amp;quot;, SMD Optokoppler Footprints (1 Kanalig) und Footprints für Toshiba (Toslink) und Agilent (Versatile Link) LWL Ssender und Empfänger. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:Pentawatt_RevB_30Apr2011.zip‎]] Footprints von Pentawatt Gehäusen für KiCAD. Enthält verschiedene Ausführungen der TO220-5 Gehäuse in gerade und verkröpft, sowie stehend und liegend. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[http://www.mikrocontroller.net/topic/176405#new]] KiCAD Modul / Footprint für ein TSSOP38 Gehäuse. Autor Raphael Reu.&lt;br /&gt;
&lt;br /&gt;
* [[http://www.mikrocontroller.net/topic/190088#1856759]] Texas Instruments TPIC8101 Klopfsensor Interface (für Verbrennungsmotoren). Autor Peter Diener.&lt;br /&gt;
&lt;br /&gt;
* [[Media:IR-directFET_Packages_RevA_30Jun2011.zip]] Footprints von directFET SMD-Transistor Gehäusen von International Rectifier für KiCAD. Enthält die SH, SJ, SQ, ST, S1, MN, MP, MT, MX, MZ und die L8-Outline. Nähere Informationen in den Datenblättern betroffener Transistoren und in der International Rectifier Applikationsnotiz AN-1035. &amp;quot;directFET&amp;quot; ist übrigens eine Handelsmarke von International Rectifier und die Gehäuse sind proprietär. Also vorsichtig sein und an &amp;quot;second source&amp;quot; denken. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn mindestens ein weiterer KiCAD User die Bibliothek geprüft hat, kann sie in den folgenden Unterabschnitt vorschoben werden.&lt;br /&gt;
&lt;br /&gt;
=== Geprüfte ===&lt;br /&gt;
&lt;br /&gt;
Hier sollen geprüfte Bibliotheken gesammelt werden. Bitte angeben, wer die Prüfung gemacht hat.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/132288#new STM32F103xx (LQFP64) Schaltplansymbol] erstellt/geprüft: Dominik C.; Marko S.&lt;br /&gt;
&lt;br /&gt;
=== Sonstige / Netz ===&lt;br /&gt;
&lt;br /&gt;
* http://www.kicadlib.org/&lt;br /&gt;
* http://per.launay.free.fr/kicad/kicad_php/composant.php &lt;br /&gt;
* http://www.reniemarquet.cjb.net/kicad/libs/o_analog.zip (NE555 u.a.)&lt;br /&gt;
* http://github.com/Inte/kicadlib&lt;br /&gt;
* http://www.df0fkw.datenoase.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=107:kicad-libraries&amp;amp;catid=36:bastelprojekte&amp;amp;Itemid=67&lt;br /&gt;
&lt;br /&gt;
Bibliotheken:&lt;br /&gt;
&lt;br /&gt;
* http://smisioto.no-ip.org/elettronica/kicad/kicad-en.htm&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* [http://kicad.rohrbacher.net/quicklib.php Quick KICAD Library Component Builder]&lt;br /&gt;
* Gerber-Tools sind für KiCAD weniger nötig, da KiCAD mit GerbView seinen eigenen Gerberviewer mitbringt. Dieser ist mächtig genug, die eingelesenen Gerberfiles als Platine in PCBnew zu exportieren, wo sie manipuliert werden können. Dieses geht aber nur mit Gerber-RS274X Daten. Ebensowenig können Gerberfiles zu Nutzen zusammengefügt werden. Hierzu bietet sich &amp;quot;Gerbmerge&amp;quot; http://claymore.engineer.gvsu.edu/~steriana/Python/gerbmerge/ an. Wer lediglich aus Sicherheitsgründen die von KiCAD erzeugten Gerberdaten mit einem fremden Gerber-Vierer inspizieren möchte, findet hier Hinweise:http://www.mikrocontroller.net/articles/Gerber-Tools&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/204063#2011138 KiCAD (Multi-)Symbol Tool] von Joghurt3000 zur Erstellung von Symbolen aus einer Textvorlage&lt;br /&gt;
* [http://cyclerecorder.org/footprintbuilder Footprintbuilder] Java-Programm zu Erstellung von Footprints.&lt;br /&gt;
&lt;br /&gt;
== Beispielprojekte ==&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/topic/33653#963083&lt;br /&gt;
* http://www.mikrocontroller.net/topic/120373#1089075 &lt;br /&gt;
* http://www.mikrocontroller.net/topic/98034#848559&lt;br /&gt;
* http://www.mikrocontroller.net/topic/95864#828660&lt;br /&gt;
* http://www.mikrocontroller.net/topic/77738#647041&lt;br /&gt;
* http://www.mikrocontroller.net/topic/103806#907523&lt;br /&gt;
* http://www.mikrocontroller.net/topic/41999#316195&lt;br /&gt;
* http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
* http://www.mikrocontroller.net/topic/188897&lt;br /&gt;
* http://www.mikrocontroller.net/articles/Modellbahn_Servodecoder_f%C3%BCr_Weichen_mit_R%C3%BCckmeldung&lt;br /&gt;
* http://www.mikrocontroller.net/articles/RS485_IO_Board_-_ModellBahnLichtSteuerung&lt;br /&gt;
* [[Media:UndervoltageProtection_RevB_19Apr2011.zip]] Beispielprojekt eines Tiefentladeschutzes für einen Blei-Gel Akku, der von den Platinenabmessungen her auf einen typischen 12V/7,2Ah Akku passt. Ausserdem bietet er abgesicherten Zugang zu den Akkuklemmen, was auch in vielen Fällen beachtenswert ist. Leider ist das Projekt noch etwas unaufgeräumt, es fehlen noch Bauteilwerte, und in der Form wurde noch keine fertige Platine daraus hergestellt, aufgebaut und getestet. Autor: Bernd Wiebus, GNU-GPL.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/index.html KiCAD] Homepage 1 und Download&lt;br /&gt;
* [http://www.lis.inpg.fr/realise_au_lis/kicad/ KiCAD] Homepage 2 und Download&lt;br /&gt;
* [http://kicad.sourceforge.net/wiki/index.php/DE:Main_Page KiCAD Wiki]&lt;br /&gt;
* Tutorials: &lt;br /&gt;
** [http://kicad.sourceforge.net/wiki/index.php/DE:Mini_tutorial Mini-Tutorial]&lt;br /&gt;
** http://www.curiousinventor.com/guides/kicad&lt;br /&gt;
** http://xtronics.com/reference/kicad.html&lt;br /&gt;
* Usergroups:&lt;br /&gt;
** [http://tech.groups.yahoo.com/group/kicad-users/ Yahoo-KiCAD-Group]&lt;br /&gt;
* Tools&lt;br /&gt;
** [http://www.freerouting.net/ Freerouting] Autorouter&lt;br /&gt;
* Plattformen&lt;br /&gt;
** Mac: http://brokentoaster.com/kicad/&lt;br /&gt;
&lt;br /&gt;
[[Category:Schaltplaneditoren]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=KiCad&amp;diff=61611</id>
		<title>KiCad</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=KiCad&amp;diff=61611"/>
		<updated>2011-11-13T19:40:06Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: 3D konvertieren mit FreeCAD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;KiCAD&#039;&#039;&#039; ist ein Open Source [[Schaltplaneditoren|Schaltplaneditor]] und PCB Layoutprogramm für Windows, Linux, Mac OSX.&lt;br /&gt;
&lt;br /&gt;
Diese Seite ist zunächst eine Zusammenfassung aus den KiCAD Beiträgen im Forum. Und gleich zu Anfang ein grosses DANKE an alle KiCAD-User aus dem Forum. Ihr seid zu viele, um jeden einzeln zu nennen. Aber wer sich diese Seite durchliest und den Links folgt, wird euch kennenlernen.  &lt;br /&gt;
&lt;br /&gt;
Hier sollen alte und neue KiCAD-Anwender einen Anlaufpunkt finden und neue, insbesondere µC-relevante Aktivitäten stattfinden. &lt;br /&gt;
&lt;br /&gt;
Diese Seite will keine Konkurrenz zum offiziellen KiCAD Wiki sein, d.h. was dort steht soll hier nicht wiederholt werden und was hier steht wird hoffentlich zum offiziellen KiCAD Wiki wandern.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr Kritik oder Fragen zu KiCAD habt, dann nutzt das Forum! Sobald KiCAD im Betreff steht, wird der Beitrag gelesen und nach Möglichkeit beantwortet. Auch Ideen zu dieser Seite sind sehr willkommen! &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Siehe auch die offizielle FAQ: http://kicad.sourceforge.net/wiki/index.php/FAQ&lt;br /&gt;
&lt;br /&gt;
TODO: Strukturierung (Allg., Schaltplan, Netlists, Module, Bibliotheken, Layout, Export, 3D)&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Warum gefällt dir KiCAD?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#584639&lt;br /&gt;
** http://www.mikrocontroller.net/topic/81396#680502&lt;br /&gt;
** http://www.mikrocontroller.net/topic/83311#697917&lt;br /&gt;
** http://www.mikrocontroller.net/topic/42614#321502&lt;br /&gt;
* Warum gefällt dir KiCAD nicht?&lt;br /&gt;
** Ich verstehe nicht, was du meinst ;-)&lt;br /&gt;
** http://www.mikrocontroller.net/topic/81396#680502&lt;br /&gt;
** http://www.mikrocontroller.net/topic/83311#697969&lt;br /&gt;
** Debian Lenny user können zur Zeit als aktuelleste Version nur die vom 05 Mai 2010 auf einfachem Wege nutzen. Grund: Dafür existiert ein gut funktionierendes Ubuntu 8.10 binary. Für aktuellere Versionen existiert kein direkt auf Debian lauffähiges Binary. Aus den Quellen compilieren ist auch nur den versiertesten möglich, weil die aktuellen Sourcen auf Launchpad liegen, dort über Bazaar (bzr) abzurufen sind, und Launchpad nicht das 1.5 bzr akzeptiert, das als Debian Package vorliegt. Es existiert zwar ein ausreichend aktueller Backport für Debian Lenny, aber der führt zu Packetkollisionen. Im Krieg Debian/Ubuntu steht KiCAD also auf Ubuntu Seite.&lt;br /&gt;
***Anmerkung: Mit Squeeze(testing) funktioniert KiCAD einwandfrei, Lenny ist mittlerweile zwei Jahre alt.&lt;br /&gt;
* Wo gibt es weitere Infos zu KiCAD?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/98034#848661&lt;br /&gt;
* Welche Leiterplattenfertiger akzeptieren KiCAD Layouts?&lt;br /&gt;
** http://www.pcb-pool.de KiCAD kann &amp;quot;Extended&amp;quot; Gerber RS-247-X erzeugen. Das wird von PCB-Pool aktzeptiert. Dabei http://www.pcb-pool.com/download/spezifikation/deu_cmso020_ext_gerber.pdf beachten! Alternativ, wer KiCAD (noch) nicht traut, diese RS-247-X in deren (PCB-Pools) Tool GC-Prevue  http://www.mikrocontroller.net/topic/120373#1092375 einlesen und als .GWK exportieren.&lt;br /&gt;
** http://fischer-leiterplatten.de Ohne Aufpreis für Gerber-Import  &lt;br /&gt;
* Wie geht man mit KiCAD-Trollen um?&lt;br /&gt;
** Mit gesundem Menschenverstand. Trollregeln wie die US AIR FORCE (http://blog.wired.com/defense/2009/01/usaf-blog-respo.html) brauchen wir nicht ;-)&lt;br /&gt;
* Wie kriege ich raus, welche Leiterbahn welchen Netznamen hat, bzw. ich habe den Überblick verloren und weiss nicht mehr, was aus dem Layout nun was im Schaltplan ist?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/218922#2211644&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
* Wie stellt man die Blattgrösse beim Schaltplan ein?&lt;br /&gt;
** In Page Settings die Blattgröße verstellen (zB von A4 auf A3) http://www.mikrocontroller.net/topic/33653#974295&lt;br /&gt;
* Wie kann man den Schaltplan auf mehreren Seiten verteilen (hierachical sheets)?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96060&lt;br /&gt;
** http://www.mikrocontroller.net/topic/117873#1060062&lt;br /&gt;
*Wie geht man mit &amp;quot;Power Pins&amp;quot; in hierachischen Schaltplänen um?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/207905#new&lt;br /&gt;
* Wie kann man die &amp;quot;hierachical sheets&amp;quot; benutzen, um aus vorgefertigten Subschaltplänen mit immer gleichen Bauteilgruppen rationell Schaltpläne zusammenzustellen (Building Blocks)?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/175597#1687653&lt;br /&gt;
** http://www.mikrocontroller.net/topic/178683#1724114&lt;br /&gt;
*Wie geht man mit Bussen um?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/208870#new&lt;br /&gt;
** und speziell bei hierachischen Schaltplänen: http://www.mikrocontroller.net/topic/209156#new&lt;br /&gt;
* Wie kann man Schaltplanentwurf (KiCAD) und Schaltungssimulation (Spice) verbinden?&lt;br /&gt;
* Ein Tutorial zum Symboleditor für KiCAD, mit dem die Symbole für das Schaltplanmodul (EEschema) erzeugt bzw. editiert werden, findet sich hier: [[Media:SymboleFuerKiCad318082009-RevC-DE.pdf]].&lt;br /&gt;
* Wie kann man im Schaltplan Symbole zum Verschieben gruppieren?&lt;br /&gt;
** Siehe http://www.mikrocontroller.net/topic/170913#&lt;br /&gt;
* Wie wird man den merkwürdigen Rahmen los?&lt;br /&gt;
** 1) Beim Ausdrucken Frame deaktivieren.&lt;br /&gt;
** 2) Als SVG exportieren/plotten. Liegt es als SVG vor, mit einem geigneten Grafikprogramm, z.B. Inkscape, den Rahmen löschen.&lt;br /&gt;
&lt;br /&gt;
=== Netlist ===&lt;br /&gt;
* Was genau muss man beim Übergang vom Schaltplan (SCH) zum Layout (BRD) machen?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/33653#898771&lt;br /&gt;
** http://www.mikrocontroller.net/topic/39243#290309&lt;br /&gt;
** http://www.mikrocontroller.net/topic/39243#891530&lt;br /&gt;
* Kann man fertige Netzlisten für Gruppen von Bauteilen einbinden?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/33653#1462871&lt;br /&gt;
* Kann man Daten für automatische Bestückung erzeugen?&lt;br /&gt;
** Ja. aber nicht in CVpcb für die Symbol &amp;gt; Footprint Zuordnung, sondern im Layout Modul PCBnew.&lt;br /&gt;
* Was bedeuten die Maßangaben in der Netlist?&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
* Wie stellt man die Rastergrösse im Layout ein?&lt;br /&gt;
** Mit der Rechten Maustaste in das Board klicken. Es poppt ein Menue auf. Dort Raster wählen..... Geht im Modul-Editor genauso.&lt;br /&gt;
* Wie füllt man eine Fläche aus?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/93131#854802&lt;br /&gt;
** Etwas aktueller: http://www.mikrocontroller.net/topic/182271#1772119 Zweiter Teil des Posts.&lt;br /&gt;
* Wie werden Pads und Leiterbahnen verbunden?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/119755#1081455&lt;br /&gt;
** aktueller: http://www.mikrocontroller.net/topic/220733#new&lt;br /&gt;
* Ich bekomme immer eine Fehlermeldung vom DRC, das ein Pad nicht angeschlossen ist, aber ich habe es angeschlossen.&lt;br /&gt;
** http://www.mikrocontroller.net/topic/204717#2018724&lt;br /&gt;
* Ich will ein Bauteil für geringeren Leiterwiderstand sowohl auf der Unterseite- als auch der Oberseite anschliessen. KiCAD löscht aber immer den alten Leiterbahnzug, wenn ich den neuen lege. &lt;br /&gt;
** Deaktiviere unter Einstellungen-&amp;gt;Allgemein das &amp;quot;auto-entfernen-von-Leiterbahnen&amp;quot; (einfachste Lösung). &lt;br /&gt;
** Alternativ: Designe dafür Bauteile mit speziellen Pads. http://www.mikrocontroller.net/topic/187606#1823596 (realistischste u. sauberste Lösung, aber etwas umständlich.)&lt;br /&gt;
* Wie kann man ein Bauteil mit Pads und Leiterbahnen bewegen? &lt;br /&gt;
** http://www.mikrocontroller.net/topic/118539#1067219&lt;br /&gt;
* Wie bekommt man ein vernünftiges Boardoutline hin?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96060#1057511 &lt;br /&gt;
* Wie erstellt man eine Befestigungsbohrung?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/179308#1726990&lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1122219 ?????&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
** Anzeige im Layout: Layer &amp;quot;Zeichnung&amp;quot; anwählen. In der rechten Menueleiste &amp;quot;Bemaßung hinzufügen&amp;quot; wählen. Das ist der fünfte Button von unten mit der &amp;quot;blauen Bemaßung&amp;quot;. Jetzt an einer Stelle links ins Layout klicken. Maus verschieben und noch einmal links klicken und die Maus seitlich verschieben. Es wird ein Maßpfeilsystem zwischen erstem und und zweitem Mausklick angelegt, deshen höhe man mit der Maus einstellen kan. Ein weiterer linker Mausklick fixiert das System. Das Anklicken der Beschriftung mit der rechten Maustaste erlaubt das Editieren. Das System wird immer in der Einheit angelegt, die in der linken  Menueleiste vorgewählt wurde. Die Rasterung der aktuellen Einstellung wird auch übernommen. Späteres Ändern von Einheit- und Raster ändern die Beschriftung nicht mehr. In 3D und im Footprint geht diese Möglichkeit nicht.&lt;br /&gt;
** Weitere Möglichkeiten: Einen Maßstab als footprint/Modul anfertigen und zum Messen in das Board einfügen.&lt;br /&gt;
** Wenn man im Layout aber direkt etwas ausmessen möchte, so geht das über den relativen Nullpunkt. Unten im Rahmen rechts sind vier Felder. Die beiden linken zeigen die absoluten Koordinaten, an, die beiden rechten die relativen Koordinaten in Bezug auf einen relativen Nullpunkt. Defaultmäßig stimmen absoluter und relativer Nullpunkt ersteinmal überein. Per &amp;quot;Space bar&amp;quot; drücken setzt Du den relativen Nullpunkt an den Ort des Mauszeigers. Wenn Du nun die Maus verfährst, zeigen die relativen Koordinaten nun den vertikalen und horizontalen Abstand zum Nullpunkt. Die Diagonale muss leider über den Pythagoras selber ausgerechnet werden, oder indem man die Polarkoordinateneinstellung wählt (linke Menueleiste). Durch geschicktes setzten des Nullpunktes kann man nun auf der Platine herummessen. Winkel können auch über die Polarkoordinateneinstellung gemessen werden. Im Moduleditor geht das analog. Das 3D-View kann zur Zeit (Jannuar 2011) überhaupt keine Bemaßung.     &lt;br /&gt;
* Wie kann man mit der KiCAD Version 20100314 &#039;&#039;&#039;einseitige&#039;&#039;&#039; Platinen erstellen?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/172015#1651239&lt;br /&gt;
** aktueller: http://www.mikrocontroller.net/topic/172015#1794699&lt;br /&gt;
*Und wie teile ich KiCAD mit, daß der Autorouter nur eine Seite verwenden soll?&lt;br /&gt;
** Auf die doofe Tour: Erst in KiCAD zweiseitig wählen, und dann beide Lagen im Autorouter als &amp;quot;Unterseite&amp;quot; wählen.&lt;br /&gt;
* Wie kann man den Nullpunkt eines Layouts verschieben?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/179680#1730452 für den Layout Editor PCBnew. Im Moduleditor bei Erstellung eines Footprints kann man den Ankerpunkt frei Mithilfe des Anker-Tools aus der rechten Menüleiste (das Ankersymbol) setzten. Gleiches gilt für den Symboleditor.&lt;br /&gt;
* Wie gehen runde Bögen in KiCAD?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/202512#1994063 &lt;br /&gt;
* Ich habe mein Board fertig geroutet, stelle aber jetzt fest, das ich noch einige Leiterbahnbreiten ändern muss. Wie geht das am einfachsten?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/205851#new&lt;br /&gt;
*Ich kann Pads nicht anschlissen bzw. ich bekomme vom DRC Fehlermeldungen, daß ich Pads nicht angeschlossen habe, obwohl sie angeschlossen sind.&lt;br /&gt;
**http://www.mikrocontroller.net/topic/204717#new&lt;br /&gt;
&lt;br /&gt;
=== Module Editor ===&lt;br /&gt;
* Wie erstellt man Footprints für Bauteile?&lt;br /&gt;
* Kann man im Module Editor die Eigenschaften aller Pads gleichzeitig ändern?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/93131#799550 &lt;br /&gt;
* Ich brauche einen Footprint, bei dem mehrere Pads verbunden sind, will aber nicht im Schaltplan zig Pins aufführen und anschliessen müssen.&lt;br /&gt;
**http://www.mikrocontroller.net/topic/208982#new&lt;br /&gt;
**http://www.mikrocontroller.net/topic/204717#new&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
&lt;br /&gt;
=== 3D-Ansicht ===&lt;br /&gt;
* Kann man die 3D-Ansicht in ein 3D-CAD Programm exportieren? &lt;br /&gt;
**http://www.mikrocontroller.net/topic/203388#new&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
&lt;br /&gt;
Da KiCAD in Punkto 3D-Ansicht komplett auf Wings3D beruht, und die 3D Modelle der Bauteile wrl-files sind, die mit Wings3D (oder Blender) erstellt werden können, sei hier auf ein Wings3D Handbuch verwiesen: http://www.oortman3d.com/wings3d/TheWings3dHandbook.pdf&lt;br /&gt;
&lt;br /&gt;
Viele Bauteilhersteller (vor allem von eher mechanischen, wie z.B. Stecker, Buchsen, Befestigung...) bieten fertige 3D-Modelle an. Diese sind meistens in den Formaten STEP oder IGES. So kann man diese in das von KiCAD benötigte .wrl (VRML 2.0) konvertieren:&lt;br /&gt;
# STEP oder IGES in [http://gcad3d.org/ gCAD3D] öffnen (File &amp;gt; Open Model)&lt;br /&gt;
# als Wavefront .obj speichern (File &amp;gt; Save Model as &amp;gt; OBJ)&lt;br /&gt;
# Das .obj in [http://www.wings3d.com/ Wings 3D] importieren (File &amp;gt; Import &amp;gt; Wavefront .obj)&lt;br /&gt;
# Als VRML 2 exportieren (File &amp;gt; Export &amp;gt; VRML 2.0 .wrl)&lt;br /&gt;
# Im KiCAD-Moduleditor die .wrl-Datei als 3D-Modell auswählen&lt;br /&gt;
# Eventuell muss man die Skalierung und Positionierung anpassen, die angezeigten Pads und Löcher helfen dabei&lt;br /&gt;
&lt;br /&gt;
Eine andere Möglichkeit .obj oder .stl-Dateien aus STEP und IGES zu erzeugen ist [http://free-cad.sourceforge.net/ FreeCAD]. Obwohl es auch .wrl direkt erzeugen kann, können diese nicht in KiCAD geladen werden. Der Umweg über .obj oder .stl und Wings 3D löst dies aber auch hier.&lt;br /&gt;
&lt;br /&gt;
=== Drucken / Export ===&lt;br /&gt;
* Wie exportiert man den Schaltplan oder das Layout als Bild (PNG o.ä.)? &lt;br /&gt;
** Drucken über Postscript-Treiber und Umwandeln mit Ghostscript&lt;br /&gt;
** [http://www.mikrocontroller.net/topic/96060#1061492]&lt;br /&gt;
** Plot to Clipboard [http://www.mikrocontroller.net/topic/117562#1056566]&lt;br /&gt;
* Wie kann ich GENAU ausdrucken? Mein Ausdruck auf ABC ist ca. X % zu klein oder Y% zu groß! &lt;br /&gt;
** So genau sind einfache Drucker bzw. Druckertreiber selten. Aber meistens hilft folgendes: Mache einen 1:1 (100%) Probeausdruck. Messe auf dem Ausdruck nach, wie groß er tatsächlich geworden ist. Berechne die Abweichung und gebe sie in den Drucker bzw. Druckertreiber unter Einstellung ein, vorausgesetzt, der Drucker bzw. Druckertreiber kann das. Mit dem Wert machst Du wieder eine Probeausdruck, messe wieder nach, und wenn es mit der Einstellung funktioniert hat, kannst Du Deine Folie bedrucken. Wenn das nicht klappen kann, weil Du stark abweichende Werte für horizontal und vertikal bräuchtest, aber der Drucker nur einen gleichen Wert für beides kennt, hast Du einen (zu) schlechten Drucker. Trozdem nicht verzweifeln, weil KiCAD beim Drucken oder Plotten in der X- und Y-Achse getrennt skalieren kann. Aber Vorsicht bei Weitergabe der so erzeugten Dateien: Sie sind individuell auf einen Drucker angepasst, und produzieren auf einem anderen Drucker nur falsch skalierte Ausdrucke. Weil der Wert von Drucker zu Drucker unterschiedlich ist, ist es auch sinnvoll, diese Skalierung direkt am speziellen Drucker/Druckertreiber zu machen. Tipp: Wenn Du den Wert erfolgreich ermittelt hast, so kleb Dir einen Zettel auf den Drucker mit dem Wert. Die Werte sind zwar individuell für jeden Drucker, aber meistens für den speziellen Drucker durchaus fix. Und Du hast ihn sofort wieder parat, wenn der Drucker resettet wurde. Dies ist übrigens ein allgemeiner Tipp für das Ausdrucken, der auch für Eagle, Target, Altium usw. gilt.&lt;br /&gt;
* Kann man Gerber-Dateien exportieren?&lt;br /&gt;
** Ja. Es wird Gerber 247X exportiert. Einheit ist inch (doppelt sowohl im 247d als auch im 247x Stil definiert). Die Y-Koordinaten sind im allgemeinen negativ. KiCAD verwendet für Flächen das in Gerber spezifizierte Polygon Makro und kein &amp;quot;stroke fill&amp;quot;.&lt;br /&gt;
** Bei Bestellungen bei PCB-Pool ist deren GC-Prevue erforderlich [http://www.mikrocontroller.net/topic/120373#1092375]&lt;br /&gt;
* Wie kann man den Gerber-Plot so ausdrucken, dass in der Mitte von Pads und Vias ein Zentrierloch frei bleibt?&lt;br /&gt;
** http://article.gmane.org/gmane.comp.cad.kicad.user/3457&lt;br /&gt;
* Wie kann man das Layout invers ausdrucken, d.h. alle Leiterbahnen und Pads müssen weiß bleiben, der Rest wird schwarz ausgedruckt?&lt;br /&gt;
** Beim Plotten den Haken bei Negativ-Plot setzen [http://www.mikrocontroller.net/topic/156202#1474507]&lt;br /&gt;
* Ich habe irgendwie Probleme mit dem Ausdrucken.&lt;br /&gt;
** Verzerrt: http://www.mikrocontroller.net/topic/207764#new&lt;br /&gt;
** Sonderzeichen: http://www.mikrocontroller.net/topic/207310#new&lt;br /&gt;
&lt;br /&gt;
=== Import ===&lt;br /&gt;
* Kann man EAGLE Dateien importieren? (=&amp;gt; Obacht bei Weitergabe der Daten!)&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#797416&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#797486&lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1089933&lt;br /&gt;
* Wie bindet man fremde KiCAD Bibliotheken ein?&lt;br /&gt;
** EESchema (Schaltplaneditor) starten, unter Einstellungen &amp;quot;Bibliothek&amp;quot;  auswählen, auf &amp;quot;Hinzufügen&amp;quot; klicken, neue Bibliothek auswählen dann &amp;quot;öffnen&amp;quot; und in der Projektdatei &amp;quot;Speichern&amp;quot;. Gültig für Version 20090216Final, 2011-04-29-BZR2986-WinXP&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen sichern / wiederherstellen===&lt;br /&gt;
* Wo speichert KiCAD die Einstellungen ab und wie lassen sich die originalen Einstellungen wiederherstellen?&lt;br /&gt;
** [[http://kicad.sourceforge.net/wiki/index.php/DE:KiCadHB#Einstellungen_sichern_.2F_wiederherstellen]]&lt;br /&gt;
**Man erstelle ein neues Projekt beliebigen Namens, nehme alle Einstellungen (Bibliotheken, Pfade usw.) vor und speichere diese in der aktuellen Projektdatei &amp;quot;name.pro&amp;quot;. Im Ordner KiCAD Verzeichnis ....../kicad/share/template befindet sich eine Datei &amp;quot;kicad.pro&amp;quot;. Diese Datei &amp;quot;kicad.pro&amp;quot; ist die &amp;quot;Musterprojektdatei&amp;quot;, die für alle neuen Projekte verwendet wird. Man benenne sie um in &amp;quot;kicad-orig.pro, und kopiere die aktuelle Projektdatei &amp;quot;name.pro&amp;quot; nun als &amp;quot;kicad.pro&amp;quot; in diesen Template-Ordner. Leider Funktioniert dieses Verfahren nicht in allen KiCAD Versionen. Den originalen Zustand stellt man wieder her, indem man &amp;quot;kicad.pro&amp;quot; umbenennt, und &amp;quot;kicad-org.pro&amp;quot; wieder in &amp;quot;kicad.pro&amp;quot; zurückumbenennt.&lt;br /&gt;
&lt;br /&gt;
=== Bitmaps als Symbol oder Footprint importieren ===&lt;br /&gt;
Der Programmteil Bitmap2component wandelt Bitmaps wahlweise in Symbole oder in Footprints um. Auf diese Weise können also auch Logos oder spezielle Muster für HF-anwendungen in KiCAD importiert werden, sobald sie als Bitmap vorliegen. Diese Funktion ist allerdings sehr neu (im Frühjahr 2011 eingefügt) und eher als experimentell zu bezeichnen. So funktioniert z.B. der Export in ein Symbol in der Version BZR-2986 NICHT.&lt;br /&gt;
&lt;br /&gt;
== Tipps&amp;amp;Tricks / Eigenheiten / Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Nachbearbeitung mit Skript oder Texteditor (Pin Swapping, Versionskontrolle via SVN, Generierung von Packages aus UCF-Listen) &lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1100467&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96860#836967&lt;br /&gt;
** http://stawoo.com/dokuwiki/doku.php?id=ecld:kicad:board&lt;br /&gt;
&lt;br /&gt;
* Schaltplan: Durchnummerieren von GND und PWR erforderlich http://www.mikrocontroller.net/topic/39243#290309&lt;br /&gt;
&lt;br /&gt;
* Zum Verbinden von Schaltplan und Layout müssen an den Bauteilen die Pinnummern mit den Padnummern der Footprints korrespondieren. Das ist &amp;quot;defaultmäßig&amp;quot; nicht immer zu erreichen, weil es unterschiedliche Nummerierungssysteme gibt. Ausser dem Anlegen eines speziellen Footprints kann diese Anpassung für einzelne Bauteile wärend des Layoutens im Moduleditor vorgenommen werden. http://www.mikrocontroller.net/topic/186121#1805890&lt;br /&gt;
&lt;br /&gt;
* In PCBnew lassen sich mit &amp;quot;Datei&amp;gt;Platine hinzufügen&amp;quot; auch schon geroutete Gruppen von Bauteilen quasi als Modul einfügen, wenn sie zuvor als Board abgelegt wurden. Ebenso kann eine Bauteilgruppe, die in der Form mehrmals vorkommt, und die die schon einmal geroutet worden ist, gruppiert, kopiert und wiederverwended werden. Die dazu nötige Annotation und das Löschen der überzähligen Bauteile muss aber sorgfältig von Hand gemacht werden. &lt;br /&gt;
&lt;br /&gt;
* Bibliotheken verwalten, umsortieren bzw. neu strukturieren: http://www.mikrocontroller.net/topic/187107#1817559 &lt;br /&gt;
&lt;br /&gt;
* Layout: Rest-Gummiband an Pins http://www.mikrocontroller.net/topic/120373#1092375&lt;br /&gt;
&lt;br /&gt;
* Produktion: http://www.mikrocontroller.net/topic/98034#848965&lt;br /&gt;
&lt;br /&gt;
* Bug in Version 2010-03-14: Unter Einstellungen lässt sich keine einseitige Platine wählen (wichtig für Autorouter). Lösung: Modifikation des .brd Files mit einem Editor [http://www.mikrocontroller.net/topic/172015#1651239]:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&lt;br /&gt;
:In der *.brd Datei gleich ganz oben...&lt;br /&gt;
:&lt;br /&gt;
:$GENERAL&lt;br /&gt;
:LayerCount 2                 -&amp;gt; auf 1 setzen&lt;br /&gt;
:&lt;br /&gt;
:$SETUP&lt;br /&gt;
:InternalUnit 0.000100 INCH&lt;br /&gt;
:ZoneGridSize 250&lt;br /&gt;
:Layers 2                     -&amp;gt; auf 1 setzen&lt;br /&gt;
:Layer[0] Rückseite power&lt;br /&gt;
:Layer[15] Vorderseite power  -&amp;gt; hab&#039; ich mal beides so gelassen&lt;br /&gt;
:&amp;lt;/pre&amp;gt;                                                                aktueller: http://www.mikrocontroller.net/topic/172015#1794699&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kühlkörper&#039;&#039;&#039; können als Symbol und Footprint (Modul) angelegt werden. Die Befestigungslöcher können im  Modul als Pad ausgeführt werden. Die Padnummer aller Pads sollte gleich sein (gleicher Anschluss / über Kühlkörper verbunden), z.B. &amp;quot;1&amp;quot;. Entsprechend ein Symbol mit Pin und korrespondierender Pinnummer anlegen. Wenn der Kühlkörper elektrisch nirgendwo verbunden sein soll, dann die Anschlusspinne im Schaltplan als &amp;quot;unused&amp;quot; markieren. Als Referenz in Symbol und Footprint habe ich &amp;quot;HS&amp;quot; (HeatSink) gewählt. Es ist zu überlegen, ob &amp;quot;HS&amp;quot; nicht auch als Padnummer besser wäre.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kartenumrisse/Outlines&#039;&#039;&#039;: Für immer wiederkehrende Platinengrössen, z.B. die beliebte Eurokarte, kann zur Vereinfachung des Zeichnens einmal ein Eurokartenumriss im Layer &amp;quot;outlines&amp;quot; gezeichnet werden, und als Modul abgelegt werden. Um die Zahl der Kollisionen beim Einlesen der Netzliste zu verringern, wird im Schaltplan ein Dummy-Symbol ohne Pinne angelegt. In CVpcb dann dieses Symbol mit dem passenden Kartenumriss Footprint/Modul verbinden, und es wird automatisch in PCBnew eingefügt. Als Referenz in Symbol und Footprint habe ich &amp;quot;Outl&amp;quot; (OUTLine) gewählt.&lt;br /&gt;
&lt;br /&gt;
=== Tipps&amp;amp;Tricks: Building Blocks ===&lt;br /&gt;
* Eine unfertige Dokumentation, wie man das hierarchische Schaltplansystem von KiCAD verwendet, um daraus schnell und rationell Schaltpläne mit vorgefertigten Schaltplänen (Building Blocks) nach dem Baukastensystem aufzubauen. Enthält auch ein Beispielprojekt. Beachte die Liesmich.txt Datei. [[Media:BuildingBlocksKiCAD-EXPERIMENTELL.zip]] Das File  KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA_Vorlaeufig.pdf, enthält eine vorläufige Beschreibung dazu. KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA-EN.pdf is an English description how to use hirarchical schematics as building blocks for a fast and rationel schematic design. Es fehlt noch die Übersetzung und die Bebilderung und ein paar Berichtigungen und Ergänzungen. ;-) . Das echte Hauptbeispielprojekt ist UnderVoltageDetector24V-2Group_Experimental.pro bzw. UnderVoltageDetector24V-2Group_Experimental.sch. Im Ordner Experimentalprojekt23052010 findet sich ein weiterer Ordner BuildingBlocksExperimental. Dieser enthält die Ausgangsbausteine VoltageRegulatorBuildingBlock.sch mit VoltageRegulatorBuildingBlock-cache.lib und  VoltageDetectorBuildingBlock.sch mit VoltageDetectorBuildingBlock-cache.lib. Die Projektdateien der Buildingblocks .pro sind nur der Vollständigkeit und zur leichteren Bearbeitung zugefügt. Aus VoltageDetectorBuildingBlock.sch und VoltageRegulatorBuildingBlock.sch wurde (nach umkopieren, umbenenen und kleiner Änderung) im übergeordneten Ordner das Projekt VoltageRegulatorBuildingBlock.pro unter verwendung des &amp;quot;Zwischenbuildingblocks&amp;quot; UnderVoltageDetectorBuildingBlock.sch zusammengesetzt. NICHT VERGESSEN DIE CACHE.LIB EINZUBINDEN! Sonst gibt es nur Fragezeichen statt Bauteile. Das Beispielprojekt enthält eine 24V Unterspannungsüberwachung für einen Bleiakku, die zwei 12V Gruppen überwacht. Nicht elegant, aber hoffentlich robust. Autor: Bernd Wiebus , GNU-GPL. Der dazubezügliche Beitrag im Forum ist: http://www.mikrocontroller.net/topic/178683#1724114&lt;br /&gt;
*[[Media:BuildingBlocks_06Jul2010.zip]] enthält eine Sammlung von gängigen Schaltungen mit den Längstreglern LM317 /LM78xx /LM79xx und dem Timer 555, die nach dem in obig erwänten Dokument KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA_Vorlaeufig.pdf beschriebenen Vorgehen als Building Blocks in KiCAD verwendet werden können. Autor: Bernd Wiebus, Lizenz: Creative Commons. Experimentell! Ohne Garantie! Mit Vorsicht geniessen!&lt;br /&gt;
&lt;br /&gt;
== Bibliotheken ==&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt sollen unsere Arbeiten an Bibliotheken koordiniert werden. Dabei sollen alle Arbeiten unter der Creative Commons Lizenz stattfinden. Das heisst insbesondere, dass keine Arbeiten mit anderem Copyright unseren Bibliothekspool vergiften sollen z.&amp;amp;nbsp;B. durch unerwünschte Konvertierung von EAGLE-Bibliotheken.  &lt;br /&gt;
&lt;br /&gt;
Unsere Designziele sind:&lt;br /&gt;
* Frei benutzbar (Creative Commons Lizenz) &lt;br /&gt;
* Einheitlich (Richtlinien?)&lt;br /&gt;
** Vorschlag von Marko für Bohrungen und Pads siehe [http://www.mikrocontroller.net/topic/124070#1176177]&lt;br /&gt;
* Fehlerfrei (Nachkontrolle durch andere User)&lt;br /&gt;
&lt;br /&gt;
=== Wünsche ===&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Strichliste geführt werden, welche neuen Bauteile gesucht sind bzw. welche oder besseren, genaueren Versionen benötigt werden. Bitte gebt an, was bei bestehenden Bauteilen problematisch ist.&lt;br /&gt;
&lt;br /&gt;
Bevor wir Bibliotheken erstellen, sollten auf jeden Fall einige Parameter - insbesondere für die Schaltplansymbole - festgelegt werden: Pinlänge, Pinabstand, Größe der Schriften, Konventionen bzw. Nummerierung (z.B. bei gepolten Bauteilen wie Dioden, Elkos usw.). Sonst entsteht Wildwuchs, weil jeder für sich anderes festlegt.&lt;br /&gt;
&lt;br /&gt;
* Stehende Layouts für 7805 und N-FETs: |||&lt;br /&gt;
** Passt TO220_VERT ? Natürlich! Nur die Anschlussnumerierung muss ev. passend adaptiert werden.&lt;br /&gt;
* LPC21xx / LPC22xx / LPC23xx |&lt;br /&gt;
* EINE AVR ATmega-Bibliothek, wo ALLE Controller drin sind. ||||&lt;br /&gt;
* AT90CAN128 / allgemein mehr AVRs (MEGA &amp;amp; TINY) ||||&lt;br /&gt;
* Schaltregler (u.A. LM257x, LM267x, MC33063, L5973D) ||&lt;br /&gt;
* Spulen (z.&amp;amp;nbsp;B. diverse Wuerth) |&lt;br /&gt;
* Drosseln (B82790 für CAN, Würth 744207) |&lt;br /&gt;
* Ferrite (7427930 - 32, 742792651, 74279263) |&lt;br /&gt;
** ??? Was genau ist nun Footprint und Referenzmaeßig der Unterschied zwischen Drosseln, Spulen und Ferriten, wenn ich jetzt mal davon ausgehe, das die Teile weder Anzapfung noch mehr als eine Wicklung haben (dann wären es Trafos oder Uebertrager), und die elektrischen Werte in ein Feld eingetragen werden?? Wenn Through-Hole langt, schau mal unten in KiCAD-Modules-Footprints-discrete_28Mar2010.zip. Kleinere SMD-Entstörferrite lassen sich uebrigens aus SMD-Widerstaenden zaubern, in dem man sie umbenahmt und mit der Referenz &amp;quot;L&amp;quot; versieht. ;-)&lt;br /&gt;
* STM32 Mikrocontroller Bibliothek (sofern möglich alle) |&lt;br /&gt;
&lt;br /&gt;
=== Entwürfe ===&lt;br /&gt;
&lt;br /&gt;
Neue Bibliotheken oder Änderungen sollen zunächst in diesem Abschnitt &lt;br /&gt;
vorgestellt werden. &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96460#832961 ATmega3250/TQFP100] von Fred S. (Gast)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96460#844741 ATMega3290 im 100Pin-Gehäuse] von Fred S. (Gast)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/132811#1205130 RFM12-Funkmodul] von Dominik C.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/133310#1210137 CAN Controller MCP2515 und Transceiver MCP2551] von Dominik C.&lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevB-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1. Schaltplan Symbolbibliothek fuer KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind. Von Bernd Wiebus&lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevC-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind. Aenderung gegenueber Rev.B: Kleinere Symbole hinzugefügt. Mit Vorsicht geniessen! Von Bernd Wiebus. &lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevD3-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind.  Aenderung gegenueber Rev.C: Kleinere Fehler beseitigt. CLD Symbol hinzugefuegt. Kuehlkoerper Symbol und Dummy-Symbol fuer Boardoutlines hinzugefuegt. Thyristor und Triac Symbol zugefuegt. Copyright Symbole GNU-GPL und CC zugefuegt. Mit Vorsicht geniessen! Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de &lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevE4.lib]] AKTUELLE Version! Ersetzt die Rev. B, C und die Rev. D sowie Vorgängerversionen E1-E3! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind.  Aenderung gegenueber Rev.D: Kleinere Fehler beseitigt. Ankerpunkte in die Nähe der Symetrieachsen verlegt. Verbinder DIN41612 / EN60603-2 &amp;quot;Eurokartenstecker&amp;quot; hinzugefügt. Große &amp;quot;BIG&amp;quot; Symbole entfernt und in der Datei BIG-SymbolsSimilarEN60617+oldDIN617-RevE.lib ausgelagert. Mit Vorsicht geniessen! Von Rene Belau und Bernd Wiebus. Unter GNU GPL. Defektes Symbol &amp;quot;RESISTOR_RevE_Date15jun2010&amp;quot; repariert am 02. Maerz 2011. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de   &lt;br /&gt;
* [[Media:BIG-SymbolsSimilarEN60617+oldDIN617-RevE.lib]] Einige EN60617 oder der DIN 617 ÄHNLICHE Symbole in besonders GROSSER Ausführung. Vermutlich werden Sie diese GROSSEN Symbole eher NICHT benutzen wollen. Mit Vorsicht geniessen! Von Rene Belau und Bernd Wiebus. Unter GNU GPL. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[http://www.mikrocontroller.net/attachment/74203/obi.lib]] KiCAD Symbol für einen ATMEGA644. Von obi&lt;br /&gt;
* [[Media:Symbols_ICs-Diskrete_RevC.lib]] KiCAD Symbole für einige diskrete ICs. Enthält L200 (Pentawatt Gehäuse), LM2587 (Pentawatt Gehäuse), LM317, LM78xx, LM79xx, NE555, TDA2003 (Pentawatt Gehäuse), UC38xx (DIP8/SO8 und PIP14/SO14), MIC4422 (DIP8/SO8 und Pentawatt Gehäuse). MAX756 und MAX757. Autor Rene Belau und Bernd Wiebus. GNU GPL. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Symbols_ICs-Opto_RevB_06Apr2011.lib]] KiCAD Symbole für Optokoppler CNY17, IL300. IL388, TLP250, SFH617A-1, SFH617A-2, SFH617A-3, SFH617A-4, KPC357, LTV35x, und PC357. LWL Empfänger Toshiba TORX170 TORX173 TORX193  und TORX194 (Toslink). LWL Sender Toshiba TOTX170 TOTX173 TOTX193  und TOTX194 (Toslink). LWL Empfänger Agilent HFBR-252x und Sender Agilent HFBR-152x Serie (Versatile Link). Autor Rene Belau und Bernd Wiebus. GNU GPL. Mit VORSICHT geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Transformer-Diskrete_RevA.lib]] KiCAD Symbole für einige diskrete Transformatoren. Coilcraft Q4434-B = Rhombus T1311 und Myrra-74040 ETD29. Autor: Bernd Wiebus. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Symbols_DCDC-Converter_RevB_06Apr2011.lib]] KiCAD Symbole für einige DCDC-Converter. Enthält CINCON EC5BC12, CINCON EC6C11, TRACO TED-1212, TRACO TED-XXXX Dual Output, TRACO TED-XXXX Single Output, TRACO TEN10-1212, TRACO TEN10-XXXX, TRACO TME-XXXX, TRACO TMH-XXXX Single Output, TRACO TMH-XXXX Dual Output, BOTHHAND CF-Serie und DELTA DPS05U09D. Autor: Bernd Wiebus. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD_Module_Footprints_21Apr2011.zip]] Eine Sammlung von KiCAD Modulen bzw. Footprints diskreter Bauteile. Neben den obligatorischen Rs, Cs und Ls sind Schrack und Omron Kartenrelais (die Footprints passen auch fuer andere Hersteller), diverse Dioden, Klemmen WAGO 236 (RM 5mm) Serie und WAGO 734 Serie, Sicherungshalter (Schurter und Bulgin), Kuehlkoerper und Eurokartenoutlines enthalten. Zusaetzlich TO92, TO220, TO220-5 (Pentawatt) und TO247 Gehaeuse. Ebenso die vermissten PISN und PISR SMD Drosseln. Einige Throughhole C&amp;amp;D Bobin Drosseln, Bourns 3296, Spectrol Type 43 / Econtrim und Piher PT15 Trimmer . Potentiometer Alps RK16 und Spectrol Type 148/149. Transformatoren Coilcraft Q4434-B / Rhombus T1311 sowie ETD29 von Epcos und Myrra sind auch dabei. Eurokartenstecker/-buchsen DIN 41612 Typ B1, B2, C1, C2 und C3. Ebenfalls enthalten: GNU-GPL und Creative Commons  Symbole. Dazu Messpunkte. BNC-Buchse, Quarzoszillator, SMD Widerstände und Kondensatoren.  (0805, 1206, 2512) sowie experimentelle Universalfootprints SMD/Throughole. SMD-Dioden: MELF, Mini-MELF, SMA, SMB und SMC. Neu in der Version vom 27 Juni 2010: Stecker Molex Serie KK, Würth SMD Drosseln und Doppeldrosseln. Alles ohne 3D Modelle, aber manchmal mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD-Module_Buzzer_Beeper_RevA_25Oct2010.zip]] Einige Footprints von Summern /Buzzern / Beepern für KiCAD. Enthaelt Kingstate KCG0601, Pro Signal ABI-009-RC, Pro Signal ABI-010-RC, Pro Signal ABT-410-RC, Star Micronics HMB-06/HMB-12 und Projects Unlimited AI-4228-TWT-R. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD-Module_CommonModeChokes_Wuerth_WE-CMB-Series_RevA_25Oct2010.zip]] Footprints der Gleichtaktdrosseln der Serie Würth WE CMB (through hole) für KiCAD. Enthält die Verschieden Bauformen XS, S, M, L, XL und XXL. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:DCDC-Converter_RevB_06Apr2011.zip]] Footprints von DCDC-Convertern für KiCAD. Enthält CINCON EC5BC12, CINCON EC6C11, TRACO TED-1212, TRACO TED-XXXX Dual Output, TRACO TED-XXXX Single Output, TRACO TEN10-1212, TRACO TEN10-XXXX, TRACO TME-XXXX, TRACO TMH-XXXX Single Output, TRACO TMH-XXXX Dual Output, BOTHHAND CF-Serie und DELTA DPS05U09D. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:Opto-Devices_RevC_30Apr2011Amendet02Jul2011.zip]] Footprints von Optoelectronischen Bauteilen für KiCAD. Enthält 6 Polige DIL Footprints für CNY17, auch in &amp;quot;wide&amp;quot;, SMD Optokoppler Footprints (1 Kanalig) und Footprints für Toshiba (Toslink) und Agilent (Versatile Link) LWL Ssender und Empfänger. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:Pentawatt_RevB_30Apr2011.zip‎]] Footprints von Pentawatt Gehäusen für KiCAD. Enthält verschiedene Ausführungen der TO220-5 Gehäuse in gerade und verkröpft, sowie stehend und liegend. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[http://www.mikrocontroller.net/topic/176405#new]] KiCAD Modul / Footprint für ein TSSOP38 Gehäuse. Autor Raphael Reu.&lt;br /&gt;
&lt;br /&gt;
* [[http://www.mikrocontroller.net/topic/190088#1856759]] Texas Instruments TPIC8101 Klopfsensor Interface (für Verbrennungsmotoren). Autor Peter Diener.&lt;br /&gt;
&lt;br /&gt;
* [[Media:IR-directFET_Packages_RevA_30Jun2011.zip]] Footprints von directFET SMD-Transistor Gehäusen von International Rectifier für KiCAD. Enthält die SH, SJ, SQ, ST, S1, MN, MP, MT, MX, MZ und die L8-Outline. Nähere Informationen in den Datenblättern betroffener Transistoren und in der International Rectifier Applikationsnotiz AN-1035. &amp;quot;directFET&amp;quot; ist übrigens eine Handelsmarke von International Rectifier und die Gehäuse sind proprietär. Also vorsichtig sein und an &amp;quot;second source&amp;quot; denken. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn mindestens ein weiterer KiCAD User die Bibliothek geprüft hat, kann sie in den folgenden Unterabschnitt vorschoben werden.&lt;br /&gt;
&lt;br /&gt;
=== Geprüfte ===&lt;br /&gt;
&lt;br /&gt;
Hier sollen geprüfte Bibliotheken gesammelt werden. Bitte angeben, wer die Prüfung gemacht hat.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/132288#new STM32F103xx (LQFP64) Schaltplansymbol] erstellt/geprüft: Dominik C.; Marko S.&lt;br /&gt;
&lt;br /&gt;
=== Sonstige / Netz ===&lt;br /&gt;
&lt;br /&gt;
* http://www.kicadlib.org/&lt;br /&gt;
* http://per.launay.free.fr/kicad/kicad_php/composant.php &lt;br /&gt;
* http://www.reniemarquet.cjb.net/kicad/libs/o_analog.zip (NE555 u.a.)&lt;br /&gt;
* http://github.com/Inte/kicadlib&lt;br /&gt;
* http://www.df0fkw.datenoase.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=107:kicad-libraries&amp;amp;catid=36:bastelprojekte&amp;amp;Itemid=67&lt;br /&gt;
&lt;br /&gt;
Bibliotheken:&lt;br /&gt;
&lt;br /&gt;
* http://smisioto.no-ip.org/elettronica/kicad/kicad-en.htm&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* [http://kicad.rohrbacher.net/quicklib.php Quick KICAD Library Component Builder]&lt;br /&gt;
* Gerber-Tools sind für KiCAD weniger nötig, da KiCAD mit GerbView seinen eigenen Gerberviewer mitbringt. Dieser ist mächtig genug, die eingelesenen Gerberfiles als Platine in PCBnew zu exportieren, wo sie manipuliert werden können. Dieses geht aber nur mit Gerber-RS274X Daten. Ebensowenig können Gerberfiles zu Nutzen zusammengefügt werden. Hierzu bietet sich &amp;quot;Gerbmerge&amp;quot; http://claymore.engineer.gvsu.edu/~steriana/Python/gerbmerge/ an. Wer lediglich aus Sicherheitsgründen die von KiCAD erzeugten Gerberdaten mit einem fremden Gerber-Vierer inspizieren möchte, findet hier Hinweise:http://www.mikrocontroller.net/articles/Gerber-Tools&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/204063#2011138 KiCAD (Multi-)Symbol Tool] von Joghurt3000 zur Erstellung von Symbolen aus einer Textvorlage&lt;br /&gt;
* [http://cyclerecorder.org/footprintbuilder Footprintbuilder] Java-Programm zu Erstellung von Footprints.&lt;br /&gt;
&lt;br /&gt;
== Beispielprojekte ==&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/topic/33653#963083&lt;br /&gt;
* http://www.mikrocontroller.net/topic/120373#1089075 &lt;br /&gt;
* http://www.mikrocontroller.net/topic/98034#848559&lt;br /&gt;
* http://www.mikrocontroller.net/topic/95864#828660&lt;br /&gt;
* http://www.mikrocontroller.net/topic/77738#647041&lt;br /&gt;
* http://www.mikrocontroller.net/topic/103806#907523&lt;br /&gt;
* http://www.mikrocontroller.net/topic/41999#316195&lt;br /&gt;
* http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
* http://www.mikrocontroller.net/topic/188897&lt;br /&gt;
* http://www.mikrocontroller.net/articles/Modellbahn_Servodecoder_f%C3%BCr_Weichen_mit_R%C3%BCckmeldung&lt;br /&gt;
* http://www.mikrocontroller.net/articles/RS485_IO_Board_-_ModellBahnLichtSteuerung&lt;br /&gt;
* [[Media:UndervoltageProtection_RevB_19Apr2011.zip]] Beispielprojekt eines Tiefentladeschutzes für einen Blei-Gel Akku, der von den Platinenabmessungen her auf einen typischen 12V/7,2Ah Akku passt. Ausserdem bietet er abgesicherten Zugang zu den Akkuklemmen, was auch in vielen Fällen beachtenswert ist. Leider ist das Projekt noch etwas unaufgeräumt, es fehlen noch Bauteilwerte, und in der Form wurde noch keine fertige Platine daraus hergestellt, aufgebaut und getestet. Autor: Bernd Wiebus, GNU-GPL.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/index.html KiCAD] Homepage 1 und Download&lt;br /&gt;
* [http://www.lis.inpg.fr/realise_au_lis/kicad/ KiCAD] Homepage 2 und Download&lt;br /&gt;
* [http://kicad.sourceforge.net/wiki/index.php/DE:Main_Page KiCAD Wiki]&lt;br /&gt;
* Tutorials: &lt;br /&gt;
** [http://kicad.sourceforge.net/wiki/index.php/DE:Mini_tutorial Mini-Tutorial]&lt;br /&gt;
** http://www.curiousinventor.com/guides/kicad&lt;br /&gt;
** http://xtronics.com/reference/kicad.html&lt;br /&gt;
* Usergroups:&lt;br /&gt;
** [http://tech.groups.yahoo.com/group/kicad-users/ Yahoo-KiCAD-Group]&lt;br /&gt;
* Tools&lt;br /&gt;
** [http://www.freerouting.net/ Freerouting] Autorouter&lt;br /&gt;
* Plattformen&lt;br /&gt;
** Mac: http://brokentoaster.com/kicad/&lt;br /&gt;
&lt;br /&gt;
[[Category:Schaltplaneditoren]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=KiCad&amp;diff=61609</id>
		<title>KiCad</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=KiCad&amp;diff=61609"/>
		<updated>2011-11-13T14:39:43Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: 3D Import von STEP und IGES erklärt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;KiCAD&#039;&#039;&#039; ist ein Open Source [[Schaltplaneditoren|Schaltplaneditor]] und PCB Layoutprogramm für Windows, Linux, Mac OSX.&lt;br /&gt;
&lt;br /&gt;
Diese Seite ist zunächst eine Zusammenfassung aus den KiCAD Beiträgen im Forum. Und gleich zu Anfang ein grosses DANKE an alle KiCAD-User aus dem Forum. Ihr seid zu viele, um jeden einzeln zu nennen. Aber wer sich diese Seite durchliest und den Links folgt, wird euch kennenlernen.  &lt;br /&gt;
&lt;br /&gt;
Hier sollen alte und neue KiCAD-Anwender einen Anlaufpunkt finden und neue, insbesondere µC-relevante Aktivitäten stattfinden. &lt;br /&gt;
&lt;br /&gt;
Diese Seite will keine Konkurrenz zum offiziellen KiCAD Wiki sein, d.h. was dort steht soll hier nicht wiederholt werden und was hier steht wird hoffentlich zum offiziellen KiCAD Wiki wandern.&lt;br /&gt;
&lt;br /&gt;
Wenn ihr Kritik oder Fragen zu KiCAD habt, dann nutzt das Forum! Sobald KiCAD im Betreff steht, wird der Beitrag gelesen und nach Möglichkeit beantwortet. Auch Ideen zu dieser Seite sind sehr willkommen! &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Siehe auch die offizielle FAQ: http://kicad.sourceforge.net/wiki/index.php/FAQ&lt;br /&gt;
&lt;br /&gt;
TODO: Strukturierung (Allg., Schaltplan, Netlists, Module, Bibliotheken, Layout, Export, 3D)&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
* Warum gefällt dir KiCAD?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#584639&lt;br /&gt;
** http://www.mikrocontroller.net/topic/81396#680502&lt;br /&gt;
** http://www.mikrocontroller.net/topic/83311#697917&lt;br /&gt;
** http://www.mikrocontroller.net/topic/42614#321502&lt;br /&gt;
* Warum gefällt dir KiCAD nicht?&lt;br /&gt;
** Ich verstehe nicht, was du meinst ;-)&lt;br /&gt;
** http://www.mikrocontroller.net/topic/81396#680502&lt;br /&gt;
** http://www.mikrocontroller.net/topic/83311#697969&lt;br /&gt;
** Debian Lenny user können zur Zeit als aktuelleste Version nur die vom 05 Mai 2010 auf einfachem Wege nutzen. Grund: Dafür existiert ein gut funktionierendes Ubuntu 8.10 binary. Für aktuellere Versionen existiert kein direkt auf Debian lauffähiges Binary. Aus den Quellen compilieren ist auch nur den versiertesten möglich, weil die aktuellen Sourcen auf Launchpad liegen, dort über Bazaar (bzr) abzurufen sind, und Launchpad nicht das 1.5 bzr akzeptiert, das als Debian Package vorliegt. Es existiert zwar ein ausreichend aktueller Backport für Debian Lenny, aber der führt zu Packetkollisionen. Im Krieg Debian/Ubuntu steht KiCAD also auf Ubuntu Seite.&lt;br /&gt;
***Anmerkung: Mit Squeeze(testing) funktioniert KiCAD einwandfrei, Lenny ist mittlerweile zwei Jahre alt.&lt;br /&gt;
* Wo gibt es weitere Infos zu KiCAD?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/98034#848661&lt;br /&gt;
* Welche Leiterplattenfertiger akzeptieren KiCAD Layouts?&lt;br /&gt;
** http://www.pcb-pool.de KiCAD kann &amp;quot;Extended&amp;quot; Gerber RS-247-X erzeugen. Das wird von PCB-Pool aktzeptiert. Dabei http://www.pcb-pool.com/download/spezifikation/deu_cmso020_ext_gerber.pdf beachten! Alternativ, wer KiCAD (noch) nicht traut, diese RS-247-X in deren (PCB-Pools) Tool GC-Prevue  http://www.mikrocontroller.net/topic/120373#1092375 einlesen und als .GWK exportieren.&lt;br /&gt;
** http://fischer-leiterplatten.de Ohne Aufpreis für Gerber-Import  &lt;br /&gt;
* Wie geht man mit KiCAD-Trollen um?&lt;br /&gt;
** Mit gesundem Menschenverstand. Trollregeln wie die US AIR FORCE (http://blog.wired.com/defense/2009/01/usaf-blog-respo.html) brauchen wir nicht ;-)&lt;br /&gt;
* Wie kriege ich raus, welche Leiterbahn welchen Netznamen hat, bzw. ich habe den Überblick verloren und weiss nicht mehr, was aus dem Layout nun was im Schaltplan ist?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/218922#2211644&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
* Wie stellt man die Blattgrösse beim Schaltplan ein?&lt;br /&gt;
** In Page Settings die Blattgröße verstellen (zB von A4 auf A3) http://www.mikrocontroller.net/topic/33653#974295&lt;br /&gt;
* Wie kann man den Schaltplan auf mehreren Seiten verteilen (hierachical sheets)?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96060&lt;br /&gt;
** http://www.mikrocontroller.net/topic/117873#1060062&lt;br /&gt;
*Wie geht man mit &amp;quot;Power Pins&amp;quot; in hierachischen Schaltplänen um?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/207905#new&lt;br /&gt;
* Wie kann man die &amp;quot;hierachical sheets&amp;quot; benutzen, um aus vorgefertigten Subschaltplänen mit immer gleichen Bauteilgruppen rationell Schaltpläne zusammenzustellen (Building Blocks)?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/175597#1687653&lt;br /&gt;
** http://www.mikrocontroller.net/topic/178683#1724114&lt;br /&gt;
*Wie geht man mit Bussen um?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/208870#new&lt;br /&gt;
** und speziell bei hierachischen Schaltplänen: http://www.mikrocontroller.net/topic/209156#new&lt;br /&gt;
* Wie kann man Schaltplanentwurf (KiCAD) und Schaltungssimulation (Spice) verbinden?&lt;br /&gt;
* Ein Tutorial zum Symboleditor für KiCAD, mit dem die Symbole für das Schaltplanmodul (EEschema) erzeugt bzw. editiert werden, findet sich hier: [[Media:SymboleFuerKiCad318082009-RevC-DE.pdf]].&lt;br /&gt;
* Wie kann man im Schaltplan Symbole zum Verschieben gruppieren?&lt;br /&gt;
** Siehe http://www.mikrocontroller.net/topic/170913#&lt;br /&gt;
* Wie wird man den merkwürdigen Rahmen los?&lt;br /&gt;
** 1) Beim Ausdrucken Frame deaktivieren.&lt;br /&gt;
** 2) Als SVG exportieren/plotten. Liegt es als SVG vor, mit einem geigneten Grafikprogramm, z.B. Inkscape, den Rahmen löschen.&lt;br /&gt;
&lt;br /&gt;
=== Netlist ===&lt;br /&gt;
* Was genau muss man beim Übergang vom Schaltplan (SCH) zum Layout (BRD) machen?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/33653#898771&lt;br /&gt;
** http://www.mikrocontroller.net/topic/39243#290309&lt;br /&gt;
** http://www.mikrocontroller.net/topic/39243#891530&lt;br /&gt;
* Kann man fertige Netzlisten für Gruppen von Bauteilen einbinden?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/33653#1462871&lt;br /&gt;
* Kann man Daten für automatische Bestückung erzeugen?&lt;br /&gt;
** Ja. aber nicht in CVpcb für die Symbol &amp;gt; Footprint Zuordnung, sondern im Layout Modul PCBnew.&lt;br /&gt;
* Was bedeuten die Maßangaben in der Netlist?&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
* Wie stellt man die Rastergrösse im Layout ein?&lt;br /&gt;
** Mit der Rechten Maustaste in das Board klicken. Es poppt ein Menue auf. Dort Raster wählen..... Geht im Modul-Editor genauso.&lt;br /&gt;
* Wie füllt man eine Fläche aus?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/93131#854802&lt;br /&gt;
** Etwas aktueller: http://www.mikrocontroller.net/topic/182271#1772119 Zweiter Teil des Posts.&lt;br /&gt;
* Wie werden Pads und Leiterbahnen verbunden?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/119755#1081455&lt;br /&gt;
** aktueller: http://www.mikrocontroller.net/topic/220733#new&lt;br /&gt;
* Ich bekomme immer eine Fehlermeldung vom DRC, das ein Pad nicht angeschlossen ist, aber ich habe es angeschlossen.&lt;br /&gt;
** http://www.mikrocontroller.net/topic/204717#2018724&lt;br /&gt;
* Ich will ein Bauteil für geringeren Leiterwiderstand sowohl auf der Unterseite- als auch der Oberseite anschliessen. KiCAD löscht aber immer den alten Leiterbahnzug, wenn ich den neuen lege. &lt;br /&gt;
** Deaktiviere unter Einstellungen-&amp;gt;Allgemein das &amp;quot;auto-entfernen-von-Leiterbahnen&amp;quot; (einfachste Lösung). &lt;br /&gt;
** Alternativ: Designe dafür Bauteile mit speziellen Pads. http://www.mikrocontroller.net/topic/187606#1823596 (realistischste u. sauberste Lösung, aber etwas umständlich.)&lt;br /&gt;
* Wie kann man ein Bauteil mit Pads und Leiterbahnen bewegen? &lt;br /&gt;
** http://www.mikrocontroller.net/topic/118539#1067219&lt;br /&gt;
* Wie bekommt man ein vernünftiges Boardoutline hin?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96060#1057511 &lt;br /&gt;
* Wie erstellt man eine Befestigungsbohrung?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/179308#1726990&lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1122219 ?????&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
** Anzeige im Layout: Layer &amp;quot;Zeichnung&amp;quot; anwählen. In der rechten Menueleiste &amp;quot;Bemaßung hinzufügen&amp;quot; wählen. Das ist der fünfte Button von unten mit der &amp;quot;blauen Bemaßung&amp;quot;. Jetzt an einer Stelle links ins Layout klicken. Maus verschieben und noch einmal links klicken und die Maus seitlich verschieben. Es wird ein Maßpfeilsystem zwischen erstem und und zweitem Mausklick angelegt, deshen höhe man mit der Maus einstellen kan. Ein weiterer linker Mausklick fixiert das System. Das Anklicken der Beschriftung mit der rechten Maustaste erlaubt das Editieren. Das System wird immer in der Einheit angelegt, die in der linken  Menueleiste vorgewählt wurde. Die Rasterung der aktuellen Einstellung wird auch übernommen. Späteres Ändern von Einheit- und Raster ändern die Beschriftung nicht mehr. In 3D und im Footprint geht diese Möglichkeit nicht.&lt;br /&gt;
** Weitere Möglichkeiten: Einen Maßstab als footprint/Modul anfertigen und zum Messen in das Board einfügen.&lt;br /&gt;
** Wenn man im Layout aber direkt etwas ausmessen möchte, so geht das über den relativen Nullpunkt. Unten im Rahmen rechts sind vier Felder. Die beiden linken zeigen die absoluten Koordinaten, an, die beiden rechten die relativen Koordinaten in Bezug auf einen relativen Nullpunkt. Defaultmäßig stimmen absoluter und relativer Nullpunkt ersteinmal überein. Per &amp;quot;Space bar&amp;quot; drücken setzt Du den relativen Nullpunkt an den Ort des Mauszeigers. Wenn Du nun die Maus verfährst, zeigen die relativen Koordinaten nun den vertikalen und horizontalen Abstand zum Nullpunkt. Die Diagonale muss leider über den Pythagoras selber ausgerechnet werden, oder indem man die Polarkoordinateneinstellung wählt (linke Menueleiste). Durch geschicktes setzten des Nullpunktes kann man nun auf der Platine herummessen. Winkel können auch über die Polarkoordinateneinstellung gemessen werden. Im Moduleditor geht das analog. Das 3D-View kann zur Zeit (Jannuar 2011) überhaupt keine Bemaßung.     &lt;br /&gt;
* Wie kann man mit der KiCAD Version 20100314 &#039;&#039;&#039;einseitige&#039;&#039;&#039; Platinen erstellen?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/172015#1651239&lt;br /&gt;
** aktueller: http://www.mikrocontroller.net/topic/172015#1794699&lt;br /&gt;
*Und wie teile ich KiCAD mit, daß der Autorouter nur eine Seite verwenden soll?&lt;br /&gt;
** Auf die doofe Tour: Erst in KiCAD zweiseitig wählen, und dann beide Lagen im Autorouter als &amp;quot;Unterseite&amp;quot; wählen.&lt;br /&gt;
* Wie kann man den Nullpunkt eines Layouts verschieben?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/179680#1730452 für den Layout Editor PCBnew. Im Moduleditor bei Erstellung eines Footprints kann man den Ankerpunkt frei Mithilfe des Anker-Tools aus der rechten Menüleiste (das Ankersymbol) setzten. Gleiches gilt für den Symboleditor.&lt;br /&gt;
* Wie gehen runde Bögen in KiCAD?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/202512#1994063 &lt;br /&gt;
* Ich habe mein Board fertig geroutet, stelle aber jetzt fest, das ich noch einige Leiterbahnbreiten ändern muss. Wie geht das am einfachsten?&lt;br /&gt;
**http://www.mikrocontroller.net/topic/205851#new&lt;br /&gt;
*Ich kann Pads nicht anschlissen bzw. ich bekomme vom DRC Fehlermeldungen, daß ich Pads nicht angeschlossen habe, obwohl sie angeschlossen sind.&lt;br /&gt;
**http://www.mikrocontroller.net/topic/204717#new&lt;br /&gt;
&lt;br /&gt;
=== Module Editor ===&lt;br /&gt;
* Wie erstellt man Footprints für Bauteile?&lt;br /&gt;
* Kann man im Module Editor die Eigenschaften aller Pads gleichzeitig ändern?&lt;br /&gt;
** http://www.mikrocontroller.net/topic/93131#799550 &lt;br /&gt;
* Ich brauche einen Footprint, bei dem mehrere Pads verbunden sind, will aber nicht im Schaltplan zig Pins aufführen und anschliessen müssen.&lt;br /&gt;
**http://www.mikrocontroller.net/topic/208982#new&lt;br /&gt;
**http://www.mikrocontroller.net/topic/204717#new&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
&lt;br /&gt;
=== 3D-Ansicht ===&lt;br /&gt;
* Kann man die 3D-Ansicht in ein 3D-CAD Programm exportieren? &lt;br /&gt;
**http://www.mikrocontroller.net/topic/203388#new&lt;br /&gt;
* Wie kann man Bauteilmaße in in den Ansichten (Footprint, Layout, 3D-View) anzeigen?&lt;br /&gt;
&lt;br /&gt;
Da KiCAD in Punkto 3D-Ansicht komplett auf Wings3D beruht, und die 3D Modelle der Bauteile wrl-files sind, die mit Wings3D (oder Blender) erstellt werden können, sei hier auf ein Wings3D Handbuch verwiesen: http://www.oortman3d.com/wings3d/TheWings3dHandbook.pdf&lt;br /&gt;
&lt;br /&gt;
Viele Bauteilhersteller (vor allem von eher mechanischen, wie z.B. Stecker, Buchsen, Befestigung...) bieten fertige 3D-Modelle an. Diese sind meistens in den Formaten STEP oder IGES. So kann man diese in das von KiCAD benötigte .wrl (VRML 2.0) konvertieren:&lt;br /&gt;
# STEP oder IGES in [http://gcad3d.org/ gCAD3D] öffnen (File &amp;gt; Open Model)&lt;br /&gt;
# als Wavefront .obj speichern (File &amp;gt; Save Model as &amp;gt; OBJ)&lt;br /&gt;
# Das .obj in [http://www.wings3d.com/ Wings 3D] importieren (File &amp;gt; Import &amp;gt; Wavefront .obj)&lt;br /&gt;
# Als VRML 2 exportieren (File &amp;gt; Export &amp;gt; VRML 2.0 .wrl)&lt;br /&gt;
# Im KiCAD-Moduleditor die .wrl-Datei als 3D-Modell auswählen&lt;br /&gt;
# Eventuell muss man die Skalierung und Positionierung anpassen, die angezeigten Pads und Löcher helfen dabei&lt;br /&gt;
&lt;br /&gt;
=== Drucken / Export ===&lt;br /&gt;
* Wie exportiert man den Schaltplan oder das Layout als Bild (PNG o.ä.)? &lt;br /&gt;
** Drucken über Postscript-Treiber und Umwandeln mit Ghostscript&lt;br /&gt;
** [http://www.mikrocontroller.net/topic/96060#1061492]&lt;br /&gt;
** Plot to Clipboard [http://www.mikrocontroller.net/topic/117562#1056566]&lt;br /&gt;
* Wie kann ich GENAU ausdrucken? Mein Ausdruck auf ABC ist ca. X % zu klein oder Y% zu groß! &lt;br /&gt;
** So genau sind einfache Drucker bzw. Druckertreiber selten. Aber meistens hilft folgendes: Mache einen 1:1 (100%) Probeausdruck. Messe auf dem Ausdruck nach, wie groß er tatsächlich geworden ist. Berechne die Abweichung und gebe sie in den Drucker bzw. Druckertreiber unter Einstellung ein, vorausgesetzt, der Drucker bzw. Druckertreiber kann das. Mit dem Wert machst Du wieder eine Probeausdruck, messe wieder nach, und wenn es mit der Einstellung funktioniert hat, kannst Du Deine Folie bedrucken. Wenn das nicht klappen kann, weil Du stark abweichende Werte für horizontal und vertikal bräuchtest, aber der Drucker nur einen gleichen Wert für beides kennt, hast Du einen (zu) schlechten Drucker. Trozdem nicht verzweifeln, weil KiCAD beim Drucken oder Plotten in der X- und Y-Achse getrennt skalieren kann. Aber Vorsicht bei Weitergabe der so erzeugten Dateien: Sie sind individuell auf einen Drucker angepasst, und produzieren auf einem anderen Drucker nur falsch skalierte Ausdrucke. Weil der Wert von Drucker zu Drucker unterschiedlich ist, ist es auch sinnvoll, diese Skalierung direkt am speziellen Drucker/Druckertreiber zu machen. Tipp: Wenn Du den Wert erfolgreich ermittelt hast, so kleb Dir einen Zettel auf den Drucker mit dem Wert. Die Werte sind zwar individuell für jeden Drucker, aber meistens für den speziellen Drucker durchaus fix. Und Du hast ihn sofort wieder parat, wenn der Drucker resettet wurde. Dies ist übrigens ein allgemeiner Tipp für das Ausdrucken, der auch für Eagle, Target, Altium usw. gilt.&lt;br /&gt;
* Kann man Gerber-Dateien exportieren?&lt;br /&gt;
** Ja. Es wird Gerber 247X exportiert. Einheit ist inch (doppelt sowohl im 247d als auch im 247x Stil definiert). Die Y-Koordinaten sind im allgemeinen negativ. KiCAD verwendet für Flächen das in Gerber spezifizierte Polygon Makro und kein &amp;quot;stroke fill&amp;quot;.&lt;br /&gt;
** Bei Bestellungen bei PCB-Pool ist deren GC-Prevue erforderlich [http://www.mikrocontroller.net/topic/120373#1092375]&lt;br /&gt;
* Wie kann man den Gerber-Plot so ausdrucken, dass in der Mitte von Pads und Vias ein Zentrierloch frei bleibt?&lt;br /&gt;
** http://article.gmane.org/gmane.comp.cad.kicad.user/3457&lt;br /&gt;
* Wie kann man das Layout invers ausdrucken, d.h. alle Leiterbahnen und Pads müssen weiß bleiben, der Rest wird schwarz ausgedruckt?&lt;br /&gt;
** Beim Plotten den Haken bei Negativ-Plot setzen [http://www.mikrocontroller.net/topic/156202#1474507]&lt;br /&gt;
* Ich habe irgendwie Probleme mit dem Ausdrucken.&lt;br /&gt;
** Verzerrt: http://www.mikrocontroller.net/topic/207764#new&lt;br /&gt;
** Sonderzeichen: http://www.mikrocontroller.net/topic/207310#new&lt;br /&gt;
&lt;br /&gt;
=== Import ===&lt;br /&gt;
* Kann man EAGLE Dateien importieren? (=&amp;gt; Obacht bei Weitergabe der Daten!)&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#797416&lt;br /&gt;
** http://www.mikrocontroller.net/topic/70905#797486&lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1089933&lt;br /&gt;
* Wie bindet man fremde KiCAD Bibliotheken ein?&lt;br /&gt;
** EESchema (Schaltplaneditor) starten, unter Einstellungen &amp;quot;Bibliothek&amp;quot;  auswählen, auf &amp;quot;Hinzufügen&amp;quot; klicken, neue Bibliothek auswählen dann &amp;quot;öffnen&amp;quot; und in der Projektdatei &amp;quot;Speichern&amp;quot;. Gültig für Version 20090216Final, 2011-04-29-BZR2986-WinXP&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen sichern / wiederherstellen===&lt;br /&gt;
* Wo speichert KiCAD die Einstellungen ab und wie lassen sich die originalen Einstellungen wiederherstellen?&lt;br /&gt;
** [[http://kicad.sourceforge.net/wiki/index.php/DE:KiCadHB#Einstellungen_sichern_.2F_wiederherstellen]]&lt;br /&gt;
**Man erstelle ein neues Projekt beliebigen Namens, nehme alle Einstellungen (Bibliotheken, Pfade usw.) vor und speichere diese in der aktuellen Projektdatei &amp;quot;name.pro&amp;quot;. Im Ordner KiCAD Verzeichnis ....../kicad/share/template befindet sich eine Datei &amp;quot;kicad.pro&amp;quot;. Diese Datei &amp;quot;kicad.pro&amp;quot; ist die &amp;quot;Musterprojektdatei&amp;quot;, die für alle neuen Projekte verwendet wird. Man benenne sie um in &amp;quot;kicad-orig.pro, und kopiere die aktuelle Projektdatei &amp;quot;name.pro&amp;quot; nun als &amp;quot;kicad.pro&amp;quot; in diesen Template-Ordner. Leider Funktioniert dieses Verfahren nicht in allen KiCAD Versionen. Den originalen Zustand stellt man wieder her, indem man &amp;quot;kicad.pro&amp;quot; umbenennt, und &amp;quot;kicad-org.pro&amp;quot; wieder in &amp;quot;kicad.pro&amp;quot; zurückumbenennt.&lt;br /&gt;
&lt;br /&gt;
=== Bitmaps als Symbol oder Footprint importieren ===&lt;br /&gt;
Der Programmteil Bitmap2component wandelt Bitmaps wahlweise in Symbole oder in Footprints um. Auf diese Weise können also auch Logos oder spezielle Muster für HF-anwendungen in KiCAD importiert werden, sobald sie als Bitmap vorliegen. Diese Funktion ist allerdings sehr neu (im Frühjahr 2011 eingefügt) und eher als experimentell zu bezeichnen. So funktioniert z.B. der Export in ein Symbol in der Version BZR-2986 NICHT.&lt;br /&gt;
&lt;br /&gt;
== Tipps&amp;amp;Tricks / Eigenheiten / Bugs ==&lt;br /&gt;
&lt;br /&gt;
* Nachbearbeitung mit Skript oder Texteditor (Pin Swapping, Versionskontrolle via SVN, Generierung von Packages aus UCF-Listen) &lt;br /&gt;
** http://www.mikrocontroller.net/topic/120373#1100467&lt;br /&gt;
** http://www.mikrocontroller.net/topic/96860#836967&lt;br /&gt;
** http://stawoo.com/dokuwiki/doku.php?id=ecld:kicad:board&lt;br /&gt;
&lt;br /&gt;
* Schaltplan: Durchnummerieren von GND und PWR erforderlich http://www.mikrocontroller.net/topic/39243#290309&lt;br /&gt;
&lt;br /&gt;
* Zum Verbinden von Schaltplan und Layout müssen an den Bauteilen die Pinnummern mit den Padnummern der Footprints korrespondieren. Das ist &amp;quot;defaultmäßig&amp;quot; nicht immer zu erreichen, weil es unterschiedliche Nummerierungssysteme gibt. Ausser dem Anlegen eines speziellen Footprints kann diese Anpassung für einzelne Bauteile wärend des Layoutens im Moduleditor vorgenommen werden. http://www.mikrocontroller.net/topic/186121#1805890&lt;br /&gt;
&lt;br /&gt;
* In PCBnew lassen sich mit &amp;quot;Datei&amp;gt;Platine hinzufügen&amp;quot; auch schon geroutete Gruppen von Bauteilen quasi als Modul einfügen, wenn sie zuvor als Board abgelegt wurden. Ebenso kann eine Bauteilgruppe, die in der Form mehrmals vorkommt, und die die schon einmal geroutet worden ist, gruppiert, kopiert und wiederverwended werden. Die dazu nötige Annotation und das Löschen der überzähligen Bauteile muss aber sorgfältig von Hand gemacht werden. &lt;br /&gt;
&lt;br /&gt;
* Bibliotheken verwalten, umsortieren bzw. neu strukturieren: http://www.mikrocontroller.net/topic/187107#1817559 &lt;br /&gt;
&lt;br /&gt;
* Layout: Rest-Gummiband an Pins http://www.mikrocontroller.net/topic/120373#1092375&lt;br /&gt;
&lt;br /&gt;
* Produktion: http://www.mikrocontroller.net/topic/98034#848965&lt;br /&gt;
&lt;br /&gt;
* Bug in Version 2010-03-14: Unter Einstellungen lässt sich keine einseitige Platine wählen (wichtig für Autorouter). Lösung: Modifikation des .brd Files mit einem Editor [http://www.mikrocontroller.net/topic/172015#1651239]:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&lt;br /&gt;
:In der *.brd Datei gleich ganz oben...&lt;br /&gt;
:&lt;br /&gt;
:$GENERAL&lt;br /&gt;
:LayerCount 2                 -&amp;gt; auf 1 setzen&lt;br /&gt;
:&lt;br /&gt;
:$SETUP&lt;br /&gt;
:InternalUnit 0.000100 INCH&lt;br /&gt;
:ZoneGridSize 250&lt;br /&gt;
:Layers 2                     -&amp;gt; auf 1 setzen&lt;br /&gt;
:Layer[0] Rückseite power&lt;br /&gt;
:Layer[15] Vorderseite power  -&amp;gt; hab&#039; ich mal beides so gelassen&lt;br /&gt;
:&amp;lt;/pre&amp;gt;                                                                aktueller: http://www.mikrocontroller.net/topic/172015#1794699&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kühlkörper&#039;&#039;&#039; können als Symbol und Footprint (Modul) angelegt werden. Die Befestigungslöcher können im  Modul als Pad ausgeführt werden. Die Padnummer aller Pads sollte gleich sein (gleicher Anschluss / über Kühlkörper verbunden), z.B. &amp;quot;1&amp;quot;. Entsprechend ein Symbol mit Pin und korrespondierender Pinnummer anlegen. Wenn der Kühlkörper elektrisch nirgendwo verbunden sein soll, dann die Anschlusspinne im Schaltplan als &amp;quot;unused&amp;quot; markieren. Als Referenz in Symbol und Footprint habe ich &amp;quot;HS&amp;quot; (HeatSink) gewählt. Es ist zu überlegen, ob &amp;quot;HS&amp;quot; nicht auch als Padnummer besser wäre.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kartenumrisse/Outlines&#039;&#039;&#039;: Für immer wiederkehrende Platinengrössen, z.B. die beliebte Eurokarte, kann zur Vereinfachung des Zeichnens einmal ein Eurokartenumriss im Layer &amp;quot;outlines&amp;quot; gezeichnet werden, und als Modul abgelegt werden. Um die Zahl der Kollisionen beim Einlesen der Netzliste zu verringern, wird im Schaltplan ein Dummy-Symbol ohne Pinne angelegt. In CVpcb dann dieses Symbol mit dem passenden Kartenumriss Footprint/Modul verbinden, und es wird automatisch in PCBnew eingefügt. Als Referenz in Symbol und Footprint habe ich &amp;quot;Outl&amp;quot; (OUTLine) gewählt.&lt;br /&gt;
&lt;br /&gt;
=== Tipps&amp;amp;Tricks: Building Blocks ===&lt;br /&gt;
* Eine unfertige Dokumentation, wie man das hierarchische Schaltplansystem von KiCAD verwendet, um daraus schnell und rationell Schaltpläne mit vorgefertigten Schaltplänen (Building Blocks) nach dem Baukastensystem aufzubauen. Enthält auch ein Beispielprojekt. Beachte die Liesmich.txt Datei. [[Media:BuildingBlocksKiCAD-EXPERIMENTELL.zip]] Das File  KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA_Vorlaeufig.pdf, enthält eine vorläufige Beschreibung dazu. KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA-EN.pdf is an English description how to use hirarchical schematics as building blocks for a fast and rationel schematic design. Es fehlt noch die Übersetzung und die Bebilderung und ein paar Berichtigungen und Ergänzungen. ;-) . Das echte Hauptbeispielprojekt ist UnderVoltageDetector24V-2Group_Experimental.pro bzw. UnderVoltageDetector24V-2Group_Experimental.sch. Im Ordner Experimentalprojekt23052010 findet sich ein weiterer Ordner BuildingBlocksExperimental. Dieser enthält die Ausgangsbausteine VoltageRegulatorBuildingBlock.sch mit VoltageRegulatorBuildingBlock-cache.lib und  VoltageDetectorBuildingBlock.sch mit VoltageDetectorBuildingBlock-cache.lib. Die Projektdateien der Buildingblocks .pro sind nur der Vollständigkeit und zur leichteren Bearbeitung zugefügt. Aus VoltageDetectorBuildingBlock.sch und VoltageRegulatorBuildingBlock.sch wurde (nach umkopieren, umbenenen und kleiner Änderung) im übergeordneten Ordner das Projekt VoltageRegulatorBuildingBlock.pro unter verwendung des &amp;quot;Zwischenbuildingblocks&amp;quot; UnderVoltageDetectorBuildingBlock.sch zusammengesetzt. NICHT VERGESSEN DIE CACHE.LIB EINZUBINDEN! Sonst gibt es nur Fragezeichen statt Bauteile. Das Beispielprojekt enthält eine 24V Unterspannungsüberwachung für einen Bleiakku, die zwei 12V Gruppen überwacht. Nicht elegant, aber hoffentlich robust. Autor: Bernd Wiebus , GNU-GPL. Der dazubezügliche Beitrag im Forum ist: http://www.mikrocontroller.net/topic/178683#1724114&lt;br /&gt;
*[[Media:BuildingBlocks_06Jul2010.zip]] enthält eine Sammlung von gängigen Schaltungen mit den Längstreglern LM317 /LM78xx /LM79xx und dem Timer 555, die nach dem in obig erwänten Dokument KiCAD-HierarchischeSchaltplaene+buildingBlocksRevA_Vorlaeufig.pdf beschriebenen Vorgehen als Building Blocks in KiCAD verwendet werden können. Autor: Bernd Wiebus, Lizenz: Creative Commons. Experimentell! Ohne Garantie! Mit Vorsicht geniessen!&lt;br /&gt;
&lt;br /&gt;
== Bibliotheken ==&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt sollen unsere Arbeiten an Bibliotheken koordiniert werden. Dabei sollen alle Arbeiten unter der Creative Commons Lizenz stattfinden. Das heisst insbesondere, dass keine Arbeiten mit anderem Copyright unseren Bibliothekspool vergiften sollen z.&amp;amp;nbsp;B. durch unerwünschte Konvertierung von EAGLE-Bibliotheken.  &lt;br /&gt;
&lt;br /&gt;
Unsere Designziele sind:&lt;br /&gt;
* Frei benutzbar (Creative Commons Lizenz) &lt;br /&gt;
* Einheitlich (Richtlinien?)&lt;br /&gt;
** Vorschlag von Marko für Bohrungen und Pads siehe [http://www.mikrocontroller.net/topic/124070#1176177]&lt;br /&gt;
* Fehlerfrei (Nachkontrolle durch andere User)&lt;br /&gt;
&lt;br /&gt;
=== Wünsche ===&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Strichliste geführt werden, welche neuen Bauteile gesucht sind bzw. welche oder besseren, genaueren Versionen benötigt werden. Bitte gebt an, was bei bestehenden Bauteilen problematisch ist.&lt;br /&gt;
&lt;br /&gt;
Bevor wir Bibliotheken erstellen, sollten auf jeden Fall einige Parameter - insbesondere für die Schaltplansymbole - festgelegt werden: Pinlänge, Pinabstand, Größe der Schriften, Konventionen bzw. Nummerierung (z.B. bei gepolten Bauteilen wie Dioden, Elkos usw.). Sonst entsteht Wildwuchs, weil jeder für sich anderes festlegt.&lt;br /&gt;
&lt;br /&gt;
* Stehende Layouts für 7805 und N-FETs: |||&lt;br /&gt;
** Passt TO220_VERT ? Natürlich! Nur die Anschlussnumerierung muss ev. passend adaptiert werden.&lt;br /&gt;
* LPC21xx / LPC22xx / LPC23xx |&lt;br /&gt;
* EINE AVR ATmega-Bibliothek, wo ALLE Controller drin sind. ||||&lt;br /&gt;
* AT90CAN128 / allgemein mehr AVRs (MEGA &amp;amp; TINY) ||||&lt;br /&gt;
* Schaltregler (u.A. LM257x, LM267x, MC33063, L5973D) ||&lt;br /&gt;
* Spulen (z.&amp;amp;nbsp;B. diverse Wuerth) |&lt;br /&gt;
* Drosseln (B82790 für CAN, Würth 744207) |&lt;br /&gt;
* Ferrite (7427930 - 32, 742792651, 74279263) |&lt;br /&gt;
** ??? Was genau ist nun Footprint und Referenzmaeßig der Unterschied zwischen Drosseln, Spulen und Ferriten, wenn ich jetzt mal davon ausgehe, das die Teile weder Anzapfung noch mehr als eine Wicklung haben (dann wären es Trafos oder Uebertrager), und die elektrischen Werte in ein Feld eingetragen werden?? Wenn Through-Hole langt, schau mal unten in KiCAD-Modules-Footprints-discrete_28Mar2010.zip. Kleinere SMD-Entstörferrite lassen sich uebrigens aus SMD-Widerstaenden zaubern, in dem man sie umbenahmt und mit der Referenz &amp;quot;L&amp;quot; versieht. ;-)&lt;br /&gt;
* STM32 Mikrocontroller Bibliothek (sofern möglich alle) |&lt;br /&gt;
&lt;br /&gt;
=== Entwürfe ===&lt;br /&gt;
&lt;br /&gt;
Neue Bibliotheken oder Änderungen sollen zunächst in diesem Abschnitt &lt;br /&gt;
vorgestellt werden. &lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96460#832961 ATmega3250/TQFP100] von Fred S. (Gast)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96460#844741 ATMega3290 im 100Pin-Gehäuse] von Fred S. (Gast)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/132811#1205130 RFM12-Funkmodul] von Dominik C.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/133310#1210137 CAN Controller MCP2515 und Transceiver MCP2551] von Dominik C.&lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevB-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1. Schaltplan Symbolbibliothek fuer KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind. Von Bernd Wiebus&lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevC-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind. Aenderung gegenueber Rev.B: Kleinere Symbole hinzugefügt. Mit Vorsicht geniessen! Von Bernd Wiebus. &lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevD3-en.lib]] VERALTET! Nur aus Kompatibilitätsgründen behalten. Ersetzt für Neuentwicklungen durch Revision E1! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind.  Aenderung gegenueber Rev.C: Kleinere Fehler beseitigt. CLD Symbol hinzugefuegt. Kuehlkoerper Symbol und Dummy-Symbol fuer Boardoutlines hinzugefuegt. Thyristor und Triac Symbol zugefuegt. Copyright Symbole GNU-GPL und CC zugefuegt. Mit Vorsicht geniessen! Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de &lt;br /&gt;
* [[Media:SymbolsSimilarEN60617+oldDIN617-RevE4.lib]] AKTUELLE Version! Ersetzt die Rev. B, C und die Rev. D sowie Vorgängerversionen E1-E3! Schaltplan Symbolbibliothek für KiCAD mit Symbolen, die denen aus der EN60617 oder der ALTEN DIN 617 ÄHNLICH sind.  Aenderung gegenueber Rev.D: Kleinere Fehler beseitigt. Ankerpunkte in die Nähe der Symetrieachsen verlegt. Verbinder DIN41612 / EN60603-2 &amp;quot;Eurokartenstecker&amp;quot; hinzugefügt. Große &amp;quot;BIG&amp;quot; Symbole entfernt und in der Datei BIG-SymbolsSimilarEN60617+oldDIN617-RevE.lib ausgelagert. Mit Vorsicht geniessen! Von Rene Belau und Bernd Wiebus. Unter GNU GPL. Defektes Symbol &amp;quot;RESISTOR_RevE_Date15jun2010&amp;quot; repariert am 02. Maerz 2011. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de   &lt;br /&gt;
* [[Media:BIG-SymbolsSimilarEN60617+oldDIN617-RevE.lib]] Einige EN60617 oder der DIN 617 ÄHNLICHE Symbole in besonders GROSSER Ausführung. Vermutlich werden Sie diese GROSSEN Symbole eher NICHT benutzen wollen. Mit Vorsicht geniessen! Von Rene Belau und Bernd Wiebus. Unter GNU GPL. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[http://www.mikrocontroller.net/attachment/74203/obi.lib]] KiCAD Symbol für einen ATMEGA644. Von obi&lt;br /&gt;
* [[Media:Symbols_ICs-Diskrete_RevC.lib]] KiCAD Symbole für einige diskrete ICs. Enthält L200 (Pentawatt Gehäuse), LM2587 (Pentawatt Gehäuse), LM317, LM78xx, LM79xx, NE555, TDA2003 (Pentawatt Gehäuse), UC38xx (DIP8/SO8 und PIP14/SO14), MIC4422 (DIP8/SO8 und Pentawatt Gehäuse). MAX756 und MAX757. Autor Rene Belau und Bernd Wiebus. GNU GPL. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Symbols_ICs-Opto_RevB_06Apr2011.lib]] KiCAD Symbole für Optokoppler CNY17, IL300. IL388, TLP250, SFH617A-1, SFH617A-2, SFH617A-3, SFH617A-4, KPC357, LTV35x, und PC357. LWL Empfänger Toshiba TORX170 TORX173 TORX193  und TORX194 (Toslink). LWL Sender Toshiba TOTX170 TOTX173 TOTX193  und TOTX194 (Toslink). LWL Empfänger Agilent HFBR-252x und Sender Agilent HFBR-152x Serie (Versatile Link). Autor Rene Belau und Bernd Wiebus. GNU GPL. Mit VORSICHT geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Transformer-Diskrete_RevA.lib]] KiCAD Symbole für einige diskrete Transformatoren. Coilcraft Q4434-B = Rhombus T1311 und Myrra-74040 ETD29. Autor: Bernd Wiebus. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
* [[Media:Symbols_DCDC-Converter_RevB_06Apr2011.lib]] KiCAD Symbole für einige DCDC-Converter. Enthält CINCON EC5BC12, CINCON EC6C11, TRACO TED-1212, TRACO TED-XXXX Dual Output, TRACO TED-XXXX Single Output, TRACO TEN10-1212, TRACO TEN10-XXXX, TRACO TME-XXXX, TRACO TMH-XXXX Single Output, TRACO TMH-XXXX Dual Output, BOTHHAND CF-Serie und DELTA DPS05U09D. Autor: Bernd Wiebus. Mit Vorsicht geniessen! Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD_Module_Footprints_21Apr2011.zip]] Eine Sammlung von KiCAD Modulen bzw. Footprints diskreter Bauteile. Neben den obligatorischen Rs, Cs und Ls sind Schrack und Omron Kartenrelais (die Footprints passen auch fuer andere Hersteller), diverse Dioden, Klemmen WAGO 236 (RM 5mm) Serie und WAGO 734 Serie, Sicherungshalter (Schurter und Bulgin), Kuehlkoerper und Eurokartenoutlines enthalten. Zusaetzlich TO92, TO220, TO220-5 (Pentawatt) und TO247 Gehaeuse. Ebenso die vermissten PISN und PISR SMD Drosseln. Einige Throughhole C&amp;amp;D Bobin Drosseln, Bourns 3296, Spectrol Type 43 / Econtrim und Piher PT15 Trimmer . Potentiometer Alps RK16 und Spectrol Type 148/149. Transformatoren Coilcraft Q4434-B / Rhombus T1311 sowie ETD29 von Epcos und Myrra sind auch dabei. Eurokartenstecker/-buchsen DIN 41612 Typ B1, B2, C1, C2 und C3. Ebenfalls enthalten: GNU-GPL und Creative Commons  Symbole. Dazu Messpunkte. BNC-Buchse, Quarzoszillator, SMD Widerstände und Kondensatoren.  (0805, 1206, 2512) sowie experimentelle Universalfootprints SMD/Throughole. SMD-Dioden: MELF, Mini-MELF, SMA, SMB und SMC. Neu in der Version vom 27 Juni 2010: Stecker Molex Serie KK, Würth SMD Drosseln und Doppeldrosseln. Alles ohne 3D Modelle, aber manchmal mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD-Module_Buzzer_Beeper_RevA_25Oct2010.zip]] Einige Footprints von Summern /Buzzern / Beepern für KiCAD. Enthaelt Kingstate KCG0601, Pro Signal ABI-009-RC, Pro Signal ABI-010-RC, Pro Signal ABT-410-RC, Star Micronics HMB-06/HMB-12 und Projects Unlimited AI-4228-TWT-R. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:KiCAD-Module_CommonModeChokes_Wuerth_WE-CMB-Series_RevA_25Oct2010.zip]] Footprints der Gleichtaktdrosseln der Serie Würth WE CMB (through hole) für KiCAD. Enthält die Verschieden Bauformen XS, S, M, L, XL und XXL. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und entweder unter GNU-GPL oder CC. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:DCDC-Converter_RevB_06Apr2011.zip]] Footprints von DCDC-Convertern für KiCAD. Enthält CINCON EC5BC12, CINCON EC6C11, TRACO TED-1212, TRACO TED-XXXX Dual Output, TRACO TED-XXXX Single Output, TRACO TEN10-1212, TRACO TEN10-XXXX, TRACO TME-XXXX, TRACO TMH-XXXX Single Output, TRACO TMH-XXXX Dual Output, BOTHHAND CF-Serie und DELTA DPS05U09D. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:Opto-Devices_RevC_30Apr2011Amendet02Jul2011.zip]] Footprints von Optoelectronischen Bauteilen für KiCAD. Enthält 6 Polige DIL Footprints für CNY17, auch in &amp;quot;wide&amp;quot;, SMD Optokoppler Footprints (1 Kanalig) und Footprints für Toshiba (Toslink) und Agilent (Versatile Link) LWL Ssender und Empfänger. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[Media:Pentawatt_RevB_30Apr2011.zip‎]] Footprints von Pentawatt Gehäusen für KiCAD. Enthält verschiedene Ausführungen der TO220-5 Gehäuse in gerade und verkröpft, sowie stehend und liegend. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
* [[http://www.mikrocontroller.net/topic/176405#new]] KiCAD Modul / Footprint für ein TSSOP38 Gehäuse. Autor Raphael Reu.&lt;br /&gt;
&lt;br /&gt;
* [[http://www.mikrocontroller.net/topic/190088#1856759]] Texas Instruments TPIC8101 Klopfsensor Interface (für Verbrennungsmotoren). Autor Peter Diener.&lt;br /&gt;
&lt;br /&gt;
* [[Media:IR-directFET_Packages_RevA_30Jun2011.zip]] Footprints von directFET SMD-Transistor Gehäusen von International Rectifier für KiCAD. Enthält die SH, SJ, SQ, ST, S1, MN, MP, MT, MX, MZ und die L8-Outline. Nähere Informationen in den Datenblättern betroffener Transistoren und in der International Rectifier Applikationsnotiz AN-1035. &amp;quot;directFET&amp;quot; ist übrigens eine Handelsmarke von International Rectifier und die Gehäuse sind proprietär. Also vorsichtig sein und an &amp;quot;second source&amp;quot; denken. Alles ohne 3D Modelle, aber mit PDF-Ausdruck zur leichten Identifikation. Mit Vorsicht geniessen! Ohne Garantie und unter GNU-GPL. Von Bernd Wiebus. Verbesserungsvorschläge willkommen an bernd.wiebus@gmx.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn mindestens ein weiterer KiCAD User die Bibliothek geprüft hat, kann sie in den folgenden Unterabschnitt vorschoben werden.&lt;br /&gt;
&lt;br /&gt;
=== Geprüfte ===&lt;br /&gt;
&lt;br /&gt;
Hier sollen geprüfte Bibliotheken gesammelt werden. Bitte angeben, wer die Prüfung gemacht hat.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/132288#new STM32F103xx (LQFP64) Schaltplansymbol] erstellt/geprüft: Dominik C.; Marko S.&lt;br /&gt;
&lt;br /&gt;
=== Sonstige / Netz ===&lt;br /&gt;
&lt;br /&gt;
* http://www.kicadlib.org/&lt;br /&gt;
* http://per.launay.free.fr/kicad/kicad_php/composant.php &lt;br /&gt;
* http://www.reniemarquet.cjb.net/kicad/libs/o_analog.zip (NE555 u.a.)&lt;br /&gt;
* http://github.com/Inte/kicadlib&lt;br /&gt;
* http://www.df0fkw.datenoase.de/index.php?option=com_content&amp;amp;view=article&amp;amp;id=107:kicad-libraries&amp;amp;catid=36:bastelprojekte&amp;amp;Itemid=67&lt;br /&gt;
&lt;br /&gt;
Bibliotheken:&lt;br /&gt;
&lt;br /&gt;
* http://smisioto.no-ip.org/elettronica/kicad/kicad-en.htm&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* [http://kicad.rohrbacher.net/quicklib.php Quick KICAD Library Component Builder]&lt;br /&gt;
* Gerber-Tools sind für KiCAD weniger nötig, da KiCAD mit GerbView seinen eigenen Gerberviewer mitbringt. Dieser ist mächtig genug, die eingelesenen Gerberfiles als Platine in PCBnew zu exportieren, wo sie manipuliert werden können. Dieses geht aber nur mit Gerber-RS274X Daten. Ebensowenig können Gerberfiles zu Nutzen zusammengefügt werden. Hierzu bietet sich &amp;quot;Gerbmerge&amp;quot; http://claymore.engineer.gvsu.edu/~steriana/Python/gerbmerge/ an. Wer lediglich aus Sicherheitsgründen die von KiCAD erzeugten Gerberdaten mit einem fremden Gerber-Vierer inspizieren möchte, findet hier Hinweise:http://www.mikrocontroller.net/articles/Gerber-Tools&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/204063#2011138 KiCAD (Multi-)Symbol Tool] von Joghurt3000 zur Erstellung von Symbolen aus einer Textvorlage&lt;br /&gt;
* [http://cyclerecorder.org/footprintbuilder Footprintbuilder] Java-Programm zu Erstellung von Footprints.&lt;br /&gt;
&lt;br /&gt;
== Beispielprojekte ==&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/topic/33653#963083&lt;br /&gt;
* http://www.mikrocontroller.net/topic/120373#1089075 &lt;br /&gt;
* http://www.mikrocontroller.net/topic/98034#848559&lt;br /&gt;
* http://www.mikrocontroller.net/topic/95864#828660&lt;br /&gt;
* http://www.mikrocontroller.net/topic/77738#647041&lt;br /&gt;
* http://www.mikrocontroller.net/topic/103806#907523&lt;br /&gt;
* http://www.mikrocontroller.net/topic/41999#316195&lt;br /&gt;
* http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
* http://www.mikrocontroller.net/topic/188897&lt;br /&gt;
* http://www.mikrocontroller.net/articles/Modellbahn_Servodecoder_f%C3%BCr_Weichen_mit_R%C3%BCckmeldung&lt;br /&gt;
* http://www.mikrocontroller.net/articles/RS485_IO_Board_-_ModellBahnLichtSteuerung&lt;br /&gt;
* [[Media:UndervoltageProtection_RevB_19Apr2011.zip]] Beispielprojekt eines Tiefentladeschutzes für einen Blei-Gel Akku, der von den Platinenabmessungen her auf einen typischen 12V/7,2Ah Akku passt. Ausserdem bietet er abgesicherten Zugang zu den Akkuklemmen, was auch in vielen Fällen beachtenswert ist. Leider ist das Projekt noch etwas unaufgeräumt, es fehlen noch Bauteilwerte, und in der Form wurde noch keine fertige Platine daraus hergestellt, aufgebaut und getestet. Autor: Bernd Wiebus, GNU-GPL.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://iut-tice.ujf-grenoble.fr/kicad/index.html KiCAD] Homepage 1 und Download&lt;br /&gt;
* [http://www.lis.inpg.fr/realise_au_lis/kicad/ KiCAD] Homepage 2 und Download&lt;br /&gt;
* [http://kicad.sourceforge.net/wiki/index.php/DE:Main_Page KiCAD Wiki]&lt;br /&gt;
* Tutorials: &lt;br /&gt;
** [http://kicad.sourceforge.net/wiki/index.php/DE:Mini_tutorial Mini-Tutorial]&lt;br /&gt;
** http://www.curiousinventor.com/guides/kicad&lt;br /&gt;
** http://xtronics.com/reference/kicad.html&lt;br /&gt;
* Usergroups:&lt;br /&gt;
** [http://tech.groups.yahoo.com/group/kicad-users/ Yahoo-KiCAD-Group]&lt;br /&gt;
* Tools&lt;br /&gt;
** [http://www.freerouting.net/ Freerouting] Autorouter&lt;br /&gt;
* Plattformen&lt;br /&gt;
** Mac: http://brokentoaster.com/kicad/&lt;br /&gt;
&lt;br /&gt;
[[Category:Schaltplaneditoren]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Treiber&amp;diff=58789</id>
		<title>Treiber</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Treiber&amp;diff=58789"/>
		<updated>2011-07-21T23:19:38Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Beispiel Treiber 2 für LogicLevel hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Ein &amp;quot;Treiber&amp;quot; ist eine Schaltung, welche den nötigen Strom zur Verfügung stellt, um einen großen [[Transistor]] in der erforderlichen Zeit ein- bzw. auszuschalten. Es handelt sich dabei meist um einen Verstärker mit zusätzlichem [[Pegelwandler]]. Dadurch ist es möglich, mit einem Logikausgang, welcher meist mit 5 oder 3,3V betrieben wird, große Lasten mit [[FET|MOSFETs]] bzw. [[IGBT|IGBTs]] zu schalten. Dieser Treiber kann analog (linear) oder digital arbeiten.&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel wird hauptsächlich auf die Besonderheiten zur Ansteuerung von MOSFETs und IGBTs in der Leistungselektronik Bezug genommen, welche geschaltet betrieben werden. Diese Treiber sind digitale [[MOSFET-Übersicht#Mosfet-Treiber | MOSFET-Treiber]]&lt;br /&gt;
&lt;br /&gt;
==Anwendung ==&lt;br /&gt;
&lt;br /&gt;
[[FET | MOSFETs]] und [[IGBT]]s werden mit einer Spannung gesteuert. Bei einer Gate-Source bzw. Gate-Emitter Spannung von 0V ist das Bauteil gesperrt bzw. hochohmig. Steigt die Spannung über die sogenannte &amp;quot;Schwellenspannung&amp;quot; (engl. threshold voltage) - die für Leistungsbauteile zwischen ca. 3 und 4,5V liegt - &lt;br /&gt;
geht das Bauteil langsam vom gesperrten in den leitenden Zustand über. Bei einem weiteren Spannungsanstieg bis zu einem Level von ca. 12V verringert sich der Einschaltwiderstand beim MOSFET bzw. der Kollektor-Emitter Spannungsabfall beim IGBT auf den im Datenblatt angegebenen minimalen Wert. Eine weitere Erhöhung führt nur zu einer vergleichsweise geringen Reduktion des Widerstandes bzw. Spannungsabfalls und erhöht die Energiemenge die beim Schalten durch den Treiber &lt;br /&gt;
umgeladen werden muß dramatisch (P~U² !). Praktisch beschränkt man sich daher meist auf Gatespannungen zwischen 12...18V. Aufgrund von unvermeidbaren, sehr kleinen parasitären Effekten tritt meist ein geringes Überschwingen der Gatespannung auf. Zusammen mit diesem Überschwingen darf die Gatespannung bei nicht &amp;quot;Logic-Level&amp;quot; FETs 20V nie überschreiten.&lt;br /&gt;
&lt;br /&gt;
Im Betrieb fällt an einem Leistungstransistor immer eine bestimmte Verlustleistung an. Diese Verluste teilen sich auf in &amp;quot;Schaltverluste&amp;quot; und &amp;quot;Leitend- bzw. ON-Verluste&amp;quot;. Die ON-Verluste sind hauptsächlich vom Leistungsschalter selbst abhängig, die Schaltverluste hingegen von der Schaltgeschwindigkeit. Je schneller ein FET/IGBT ein- bzw. ausgeschaltet wird, desto geringer sind die Schaltverluste.&amp;lt;br&amp;gt;&lt;br /&gt;
Leider gibt es hier neben physikalischen Grenzen insbesondere unerwünschte Nebenwirkungen, nämlich die EMV (&#039;&#039;&#039;E&#039;&#039;&#039;lektro &#039;&#039;&#039;M&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit). Je schneller geschaltet wird, desto stärker sind die Störungen die dadurch erzeugt werden. Diese Störungen sind sehr schnell so stark, daß andere Schaltungen im Umkreis von einigen Metern beeinflußt werden d.h. die USB Maus leuchtet plötzlich auf, ohne daß sie bewegt wurde bzw. der eigene Mikrocontroller macht nicht mehr was er eigentlich sollte. EMV ist Heute eines der wichtigsten &amp;quot;Krisenthemen&amp;quot; während der Entwicklungsphase, daher nicht auf die leichte Schulter nehmen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gatebeschaltung ===&lt;br /&gt;
&lt;br /&gt;
Zwischen Treiberstufe und Schalter sind in fast allen Fällen einige passive Bauteile vorhanden. Dies wird hier im Weiteren als &amp;quot;Gatebeschaltung&amp;quot; bezeichnet.&lt;br /&gt;
&amp;lt;br&amp;gt; Hier ein Beispiel mit &amp;quot;Vollausstattung&amp;quot; und die dazugehörige Erklärung:&lt;br /&gt;
&lt;br /&gt;
# Gatewiderstand &amp;quot;R_g1&amp;quot;, um die Schaltgeschwindigkeit den Erfordernissen anzupassen. Je schneller die Schaltflanke, desto geringer die Schaltverluste. ABER Je schneller die Schaltflanke, desto größer die erzeugten Störungen (EMV). Gleichzeitig hat ein schnelles &amp;quot;Abschalten&amp;quot; auch einen starken Überschwinger (snap-off einer Diode und/oder Selbstinduktion (inductive kick)) zur Folge. Aus diesem Grund wird häufig&lt;br /&gt;
# ein Widerstand &amp;quot;R&amp;quot;_g2 und eine Diode &amp;quot;D&amp;quot; in Serienschaltung dem o.g. Gatewiderstand &amp;quot;R_g1&amp;quot; parallelgeschaltet, und zwar so, daß ein langsames ausschalten (D gesperrt) aber ein schnelles einschalten (D leitend und damit R_g1 parallel zu R_g2) ermöglicht wird, d.h. R_g1 || (R_g2+D).&lt;br /&gt;
# Um das empfindliche Gate zu schützen, wird oft eine Z-Diode, besser eine schnellere Transil-Diode (Transient Suppressor Diode) so zwischen &amp;quot;Gate&amp;quot; und &amp;quot;Source&amp;quot; bzw. &amp;quot;Emitter&amp;quot; geschaltet (&amp;quot;Kathode&amp;quot; am &amp;quot;Gate&amp;quot;), daß das &amp;quot;Gate&amp;quot; vor Spannungen &amp;gt; 20V geschützt wird. Bei einem sauberen Aufbau kann diese Sicherheitsfunktion normalerweise entfallen. Bei Testaufbauten ist eine 16V Transil-Diode Aufgrund der dort häufig vorkommenden Induktivitäten (Drahtverhau ;-) SEHR zu empfehlen. Das gleiche gilt für die&lt;br /&gt;
# Klemmdiodenkombination (Z- bzw. Transil Diode, antiseriell mit einer normalen Diode) zwischen &amp;quot;Drain&amp;quot; bzw. &amp;quot;Kollektor&amp;quot; und Gate so (&amp;quot;Kathode&amp;quot; der Z-Diode an &amp;quot;Drain&amp;quot; bzw. &amp;quot;Kollektor&amp;quot;), daß die Diode das Gatepotential anhebt, wenn die &amp;quot;Drain-Source&amp;quot; bzw. &amp;quot;Kollektor-Emitter&amp;quot; Potential in die Nähe der maximalen Blockierspannung (Spannungsfestigkeit) des Schalters kommt bzw. den vom Entwickler definierten, maximalen Spannungslevel erreicht. Dieses &amp;quot;anheben&amp;quot; führt dann zu einem vergleichsweise hochohmigen Einschalten des Schalters und damit zum VERLUSTBEHAFTETEN Energieabbau. Bei einem 30V FET verwendet man üblicherweise z.&amp;amp;nbsp;B. eine 24V Transil-Diode, bei 150V FET z.&amp;amp;nbsp;B. eine 130V Transil-Diode und bei einem 600V IGBT z.&amp;amp;nbsp;B. eine 540V Transil-Diode. Die antiserielle Diode, die verhindert, daß die Gatespannung bei fehlender Leistungsversorgung über die Transildiode abfließt, muß die gleiche Spannungsfestigkeit wie der Schalter aufweisen.&lt;br /&gt;
&lt;br /&gt;
=== Treiberleistung ===&lt;br /&gt;
&lt;br /&gt;
IGBT und FET sind zwar spannungsgesteuerte Bauelemente, trotzdem muß bei jedem Einschalten und bei jedem Ausschalten die Gatekapazität umgeladen werden, wozu &amp;quot;Strom&amp;quot; erforderlich ist ;-). Der Energiegehalt eines Kondensators wird mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E= \frac{1}{2} \cdot C \cdot U^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
berechnet. Es ist jedoch der Energiebedarf bei jedem &amp;quot;Aufladen&amp;quot; und &amp;quot;Entladen&amp;quot; zu berücksichtigen. Zur Ermittlung der wirksamen Kapazität, welche in der Formel benötigt wird, hat es sich bewährt die Datenblattangabe für &amp;quot;Cies&amp;quot; beim IGBT, bzw. den Datenblattwert für &amp;quot;Ciss&amp;quot; beim FET mit dem Faktor &amp;quot;5&amp;quot; zu multiplizieren.&lt;br /&gt;
Daher ergibt sich die Treiberleistung wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_{treiber} = 5 \cdot Cx \cdot U_g^2 \cdot f_{schalt}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel bei Ug = 18V, Cies=4nF und f_schalt=5kHz  beträgt P_treiber = 32mW. &amp;lt;br&amp;gt;Bei größeren Strömen mit einer höheren Frequenz - z.&amp;amp;nbsp;B. Induktionsheizung - wird die Ansteuerleistung schon sehr interessant, z.&amp;amp;nbsp;B. Ug = 18V, Cies=20nF und f_schalt=250kHz, hier beträgt P_treiber = 8,1W. Zusätzlich muß der Eigenverbrauch des Treibers  berücksichtigt werden, der leicht zwischen 0,5 und 1 W liegen kann.&lt;br /&gt;
&lt;br /&gt;
=== Definition zu Low- und High-Side Schalter=== &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;L&#039;&#039;&#039;ow-&#039;&#039;&#039;S&#039;&#039;&#039;ide - Schalter: Der FET schaltet eine Last gegen GND - auch als LS-Schalter bezeichnet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&#039;&#039;&#039;igh-&#039;&#039;&#039;S&#039;&#039;&#039;ide - Schalter: Der FET schaltet eine Last an die Versorgungsspannung - auch als HS-Schalter bezeichnet.&lt;br /&gt;
&lt;br /&gt;
===Beispiele zu Low-Side Treibern===&lt;br /&gt;
&lt;br /&gt;
Nachfolgend ein paar Beispiele, die sowohl für FETs, als auch für IGBTs verwendet werden können. Achtung! Auch wenn bei FETs eine Diode (Bodydiode) implementiert ist, muß bei induktiven Lasten oder langen Zuleitungen sowohl bei FETs als auch bei IGBTs eine schnelle Diode parallel zum Leistungsschalter eingesetzt werden. Diese Diode - die hier im Beispiel nicht gezeigt ist - muß räumlich direkt neben dem Leistungsschalter platziert werden. Bitte beachten, daß jede Treiberschaltung sowohl an den Leistungsschalter, als auch an den gesamten Lastkreis individuell angepaßt werden muß.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber_1_2.png|miniatur|ohne|600px|Beispiele zu diskreten LS-Treibern ]]&lt;br /&gt;
&lt;br /&gt;
Treiber-1 eignet sich eher dazu langsamere Schaltvorgänge mit Kleinsignal-FETs durchzuführen, aber auch höhere Leistungen sind prinzipiell so machbar, wenn man sich die höhere Verluste durch die langsame Ansteuerung erlauben kann.&lt;br /&gt;
Der Widerstand R26 sollte an das gewünschte Schaltverhalten angepaßt werden, weniger als ca. 100Ohm ist wegen der Stromtragfähigkeit des gewählen T4 nicht zu empfehlen. Das Schaltverhalten ist hier sehr unsymmetrisch (&amp;quot;langsam ein&amp;quot;, sehr schnell &amp;quot;aus&amp;quot;). Sollten größere Ströme geschaltet werden wird eine andere Ansteuermöglichkeit empfohlen.&lt;br /&gt;
&lt;br /&gt;
Treiber-2 ist durchaus in der Lage höhere Impulsleistungen an den Leistungstransistor zu liefern.&lt;br /&gt;
Letztendlich ist der maximale Strom von der Stromtragfähigkeit von T1&amp;amp;T2 abhängig. Die Gatewiderstände sind für schnelles (stromloses!) Einschalten und etwas langsameres Abschalten ausgelegt. Das oben gezeigte Beispiel kann so angepaßt werden, daß beim Abschalten nur ein kleiner Spannungsüberschwinger (10..20% der Betriebsspannung) zu sehen ist. Die Anbindung von C1 ist relativ kritisch, auf kürzest mögliche Anbindung ist zu achten&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, daß Treiber 2 am Eingang vor R4 ein Signal erwartet, welches für &amp;quot;An&amp;quot; bereits auf der benötigten Gate-Spannung des FETs (typischerweise 10V) liegt. Steht dagegen nur ein Logik-Signal mit 5V oder 3.3V zur Verfügung, so muß diese zuerst über eine weitere Stufe erhöht werden. Folgende Schaltung erledigt dies. Zu beachten ist aber, daß dadurch das Eingangssignal invertiert wird.&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber2_LogicLevel.png|miniatur|ohne|600px|Diskreter LS-Treiber 2 für LogicLevel-Signal]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber_3.png|miniatur|ohne|600px|Beispiel eines LS-Treibers mit Logikbausteinen]]&lt;br /&gt;
&lt;br /&gt;
Dieses Schaltungsbeispiel ist gut geeignet, um Leistungsfets mit einer mittleren Leistung anzusteuern. Es ist zu empfehlen einen Leistungsschalter mit geringer Gateladung (Qg) auszusuchen. Achtung auf den Maximalstrom den der Inverter liefern kann. Der 4069 sollte mit ca. 12V, max. 15V betrieben werden. Wenn ein Logic-Level Schalter ausgesucht wird, ist ein auch 74AC14 (kein AHC) zu empfehlen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_LS_Treiber_4.png|miniatur|ohne|600px|Beispiele eines LS-Treibers mit einem fertigen IC]]&lt;br /&gt;
&lt;br /&gt;
Oben im Bild ist ein kommerzieller Treiber-IC zu sehen - hier im Beispiel 2127 von IR. Hierzu gibt es jedoch sehr viele Alternativen, sowohl von IR, alsauch von anderen Firmen. Die Beschaltung ist jedoch immer relativ ähnlich, siehe dazu [[MOSFET-Übersicht#Mosfet-Treiber | MOSFET-Treiber]]. &amp;lt;br&amp;gt;&lt;br /&gt;
Achtung! Der GND-Zweig des Leistungskreises hat bei unsachgemäßem Aufbau einen recht großen Einfluß auf die beim Schalter ankommende Gatespannung. Je nach Aufbau führt das zu einer zu geringen Gatespannung im Schaltmoment - U_gs direkt am Schalter bricht beim Einschalten ein - oder zu einer Überspannung am Gate - U_gs schwingt über die Gatetreiberversorgung hinaus. Beides führt vermutlich früher oder später zu einer Zerstörung des Leistungsschalters. Letzters kann oft durch eine 15V-Z-Diode direkt am Schalter zwischen Gate und Source bzw. Emitter verhindert werden, eine Optimierung des Layouts bzw. der Verdrahtung ist jedoch zielführender. Beschreibungen hierzu im weiteren Verlauf des Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die oben gezeigte Masseführung ist nicht zum Spaß &#039;&#039;&#039;genau so&#039;&#039;&#039; gezeichnet. Durch eine unsaubere Masseführung - und dazu zählt z.&amp;amp;nbsp;B. auch schon der Anschluß der Treiber-Masse direkt am GND-Symbol statt direkt am Schalter - kann der Treiber oder der Schalter durch Überspannung zerstört werden. Auch ein zu starkes &amp;quot;Unterschwingen&amp;quot; des GND-Potentials gegenüber des gerade auf Masse gelegten Gatesignals führt unweigerlich zur Zerstörung des Treibers. Viele Bausteine sind bis zu einer Spannungsdifferenz von ca. -5V betriebsfähig.&amp;lt;br&amp;gt;&lt;br /&gt;
10cm Kabel besitzen eine parasitäre Induktivität von ca. 100nH. Werden 50A in 1µs geschaltet - was schon relativ langsam ist - entsteht bei jedem Schalten eine Selbstinduktionsspannung von 100nH*50A/1µs = 5V.&lt;br /&gt;
&lt;br /&gt;
===Beispiele zu High-Side Treibern===&lt;br /&gt;
&lt;br /&gt;
Nachfolgend ein paar Beispiele zu HS-Treibern, die sowohl für FETs, als auch für IGBTs verwendet werden können. Bitte beachten, daß jede Treiberschaltung sowohl an den Leistungsschalter, alsauch an den gesamten Lastkreis individuell angepaßt werden muß.&lt;br /&gt;
High-Side Treiber sind etwas komplexer aufgebaut. Der Versorgungsspannungskreis muss isoliert zur restlichen Beschaltung aufgebaut werden. Auf die Isolationsabstände ist besonders zu achten.&amp;lt;br&amp;gt;&lt;br /&gt;
Achtung: Auch wenn bei FETs eine  - meist unzureichende - Diode implementiert ist, sollte bei induktiven Lasten (oder langen Zuleitungen) sowohl bei FETs, als auch bei IGBTs eine schnelle Diode parallel zum Leistungsschalter eingesetzt werden. Diese Diode - die hier im Beispiel nicht gezeigt ist - muß räumlich direkt neben dem Leistungsschalter implementiert werden. &lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_HS_Treiber_1.png|miniatur|ohne|600px|Beispiel eines diskreten HS-Treibers ]]&lt;br /&gt;
&lt;br /&gt;
Hier im ersten Beispiel eine diskrete Ansteuerung für einen HS-Schalter. Achtung, das Signal durch die Push-Pull-Stufe invertiert. Statt Q5/Q6 wird empfohlen einen integrierten high speed Treiber wie z.&amp;amp;nbsp;B. die sehr preisgünstigen MC34151 oder MC34152 zu verwenden.&lt;br /&gt;
Die hier abgebildete Beschaltung  - die ohne weitere Veränderung bei geringerer Schaltleistung auch ohne die Push-Pull Stufe betrieben werden kann - ist für eine Betriebsspannung von ca. 400V ausgelegt. Der Widerstand R12 (hier 4k7) muß an eine geänderte Spannung angepaßt werden. Für 40V beträgt er in dieser Beschaltung 3k3. Diese Schaltung kann auch sehr einfach simuliert werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_HS_Treiber_2.png|miniatur|ohne|600px|Beispiel eines HS-Treibers mit einem fertigen IC ]]&lt;br /&gt;
&lt;br /&gt;
Das zweite Beispiel verwendet einen integrierten HS-Schalter von International Rectifier (IR) und eine separate, isolierte Versorgungsspannung. Zum IC gibt es sehr viele Alternativen, sowohl von IR, als auch von anderen Firmen. Die Beschaltung ist jedoch immer relativ ähnlich, siehe dazu [[MOSFET-Übersicht#Mosfet-Treiber|MOSFET-Treiber]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Beispiel_HS_Treiber_3.png|miniatur|ohne|600px|Beispiel eines HS-Treibers mit Bootstrap Versorgung ]]&lt;br /&gt;
&lt;br /&gt;
Das dritte Beipiel unterscheidet sich zum vorhergehenden nur dadurch, daß die Versorgungsspannung für den Treiber über eine Bootstrap-Schaltung gewonnen wird. Näheres im weiteren Verlauf dieses Artikels.&lt;br /&gt;
&lt;br /&gt;
Die oben gezeigte Leitungsführung für Treiberbezugspotential und GND-Potential ist auch hier nicht zum Spaß &#039;&#039;&#039;genau so&#039;&#039;&#039; gezeichnet. Durch eine unsaubere Leitungsführung - und dazu zählt z.&amp;amp;nbsp;B. auch schon der Anschluß des Treiber-Bezugspotentials nicht direkt an Emitter bzw. Source - kann der Treiber oder der Schalter durch Überspannung zerstört werden. Auch ein zu starkes &amp;quot;Unterschwingen&amp;quot; des GND-Potentials gegenüber des gerade auf Bezugspotential gelegten Gatesignals führt unweigerlich zur Zerstörung des Treibers. Viele Bausteine sind bis zu einer Spannungsdifferenz von ca. -5V betriebsfähig.&lt;br /&gt;
10cm Kabel besitzen eine parasitäre Induktivität von ca. 100nH. Werden 50A in 1µs geschaltet - was schon relativ langsam ist - entsteht bei jedem Schalten eine Selbstinduktionsspannung von 100nH*50A/1µs = 5V.&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung eines High-Side Treibers ===&lt;br /&gt;
&lt;br /&gt;
Jede Treiberstufe benötigt eine entsprechende Spannungsversorgung.&lt;br /&gt;
Bei einem LS-Schalter gestaltet sich dies relativ einfach, da die Versorgungsspannung im Bereich von 12..15V über dem GND Potential&lt;br /&gt;
liegt. &lt;br /&gt;
&lt;br /&gt;
Bei einem High Side N-Kanal Schalter ist deutlich mehr Aufwand nötig, da hier die Treiberspannung 12..15V über dem Sourcepotential des HS-Schalters liegen muß. Das Source-Potential liegt beim HS-Schalter je nach Anwendungsfall auf 12V bis 400V, manchmal sogar noch höher.&lt;br /&gt;
&lt;br /&gt;
==== Versorgung über isolierte DCDC Wandler ====&lt;br /&gt;
&lt;br /&gt;
Die Versorgung hierfür kann relativ einfach mit integrierten DCDC-Wandlermodulen aufgebaut werden, wie sie für wenig Geld bei Conrad oder Reichelt verfügbar sind (Leistung und Isolationsspannung beachten!).&lt;br /&gt;
&lt;br /&gt;
==== Versorgung durch eine Bootstrap Schaltung====&lt;br /&gt;
&lt;br /&gt;
Wenn es sich bei der Applikation um eine Halbbrücke handelt und der HS-Schalter nicht dauerhaft eingeschaltet sein muß (Tastverhältnis &amp;lt;100%), sondern regelmäßig getaktet wird ([[PWM]]), kann die Versorgung des HS-Schalters auch aus der massebezogenen Versorgung des LS-Schalters generiert werden. Diese Schaltung nennt sich &amp;quot;Bootstrap&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Immer wenn der LS einer Halbbrücke eingeschaltet ist, liegt das Source Potential des High Side Schalters auf GND. In diesem Zeitraum kann der Kondensator am Treiber des HS-Schalters über eine Diode aufgeladen werden. Energiequelle ist hierbei die Spannungsversorgung des LS-Schalters. Siehe dazu eines der Beispiele oben.&lt;br /&gt;
&lt;br /&gt;
=====Bootstrapkondensator=====&lt;br /&gt;
&lt;br /&gt;
Der Bootstrapkondensator soll eine niederinduktive und niederohmige Pufferung des Energiebedarfes für einen Schaltvorgang bereitstellen, daher ist ein Keramikkondensator oder auch ein Folienkondensator erforderlich. Den Energiebedarf eines Schaltvorganges ergibt sich recht einfach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; C = \frac{Q_{gate}}{\Delta U}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: Als erlaubten Spannungseinbruch während der Energieentnahme wird hier 0,5V festgelegt. Die gesamte Gateladung Q_gate (Total gate charge) ist hier z.&amp;amp;nbsp;B. 58nC bei U_g=10V. Daraus errechnet sich eine Minimalkapazität von 58nC / 0,5V = 116nF. Die Erfahrung zeigt, daß ein großzügiges erhöhen um den Faktor 3..8 sinnvoll ist, da in der Rechnung weder Leckströme des FETs und des Kondensators noch der Energieverbrauch der Treiberschaltung selbst berücksichtigt wird. Des Weiteren ist die Gateladung nur für 10V angegeben. Höhere Gatespannungen erfordern eine höhere Energiemenge. Achtung: je größer der Kondensator gewählt wird, desto mehr Zeit wird zum Laden des Kondensators über die strombegrenzende Bootstrapdiode benötigt. &amp;lt;br&amp;gt;&lt;br /&gt;
Auch wenn der Kerko für die Pufferung der Schaltenergie ausreichend ist, ist es meist sinnvoll einen Elko/Tako parallel zu schalten. Die dort gespeicherte Energie hilft z.&amp;amp;nbsp;B. wenn eine längere &amp;quot;on&amp;quot; Zeit erforderlich ist. Genauso verringert der zusätzliche Energiespeicher den zum Ladungsausgleich erforderlichen Strompuls des Kerkos. Dadurch verbessert sich das EMV-Verhalten des Treibers meßbar.&lt;br /&gt;
&lt;br /&gt;
=====Auslegung des Bootstrapdiodenzweiges =====&lt;br /&gt;
&lt;br /&gt;
# Die Spannungsfestigkeit der Diode muß größer sein, als die auftretende Maximalspannung des Lastkreises. &lt;br /&gt;
# Im ersten Ansatz muß die Recovery-Zeit der Diode (t_rr) mindestens um den Faktor 10 kürzer sein, als die minimale &amp;quot;on&amp;quot; Zeit des LS-FETs. Ist z.&amp;amp;nbsp;B. der LS-FET immer für mindestens 10ms ein, ist eine 1N4007 (t_rr ca. 1µs) ausreichend. Bei höheren Schaltfrequenzen genügt oft eine UF4007 (t_rr ca. 75ns). In einer Halbbrücke bedeutet eine längere t_rr Zeit jedoch, daß der Bootstrapkondensator des HS-Treibers beim Einschalten solange entladen wird, bis die Diode wieder sperrt. In diesem Fall muß die schnellere Diode unabhängig von der &amp;quot;on&amp;quot; Zeit ausgewählt werden&lt;br /&gt;
#Der zulässige Strom durch die Diode ist das letzte Auswahlkriterium. Da der Strom kaum kontrollierbar ist muß er mit einem Widerstand begrenzt werden. Bei einer 1N4007 beträgt der wiederholbare Maximalstrom 1A. Die Diode hat als sogenannten &amp;quot;Single pulse&amp;quot; aber eine deutlich größere Strombelastung (Datenblattangabe UF4007 = 30A). Da der Kondensator nur beim ersten Einschalten komplett vollgeladen, im Betrieb aber wie hier im Beispiel berechnet nur um &amp;lt;0,5V  aufgeladen wird, kann der Widerstand kleiner ausfallen. Daher ist in diesem Beispiel bei 15V Versorgungsspannung und Ausnutzung eines 50% = 15A Peaks für das erste Aufladen ein Minimalwiderstand von (15V - 1,5V) / 15A = 0,9Ohm erforderlich. Der Widerstand wird auf 1Ohm festgelegt. Die 1,5V stammen vom Spannungsabfall an der Diode bei 1A, bei höheren Strömen steigt der Spannungsabfall an.&lt;br /&gt;
&lt;br /&gt;
Aus dem Wert des Bootstrap-Kondensators, des -widerstandes  und des Tastverhältnisses (hier im Beispiel auf 2% festgelegt) ergibt sich eine minimale &amp;quot;on&amp;quot; Zeit für den LS-Schalter von t=R_bt * C_bt / D   d.h. 1Ohm * 470nF / 0,02 = 23,5µs. Schneller als gut 40kHz sollte in diesem Beispiel also nicht geschaltet werden, da sonst der Bootstrapkondensator nur unzureichend nachgeladen werden kann.&lt;br /&gt;
&lt;br /&gt;
===Besonderheiten beim Treiberaufbau===&lt;br /&gt;
&lt;br /&gt;
Fast jeder, der schon einmal eine geschaltete Leistungsendstufe in Betrieb genommen hat, mußte feststellen, daß der Leistungsschalter nicht immer genau das macht, was man vorher geplant hatte. Die Hauptursache ist meist - neben Problemen mit der Leistungsversorgung selbst, siehe weiter unten - der Gatekreis.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Gatekreis_Bild1.png|miniatur|ohne|300px|Gatekreis, wie im Schaltplan gezeichnet]] &lt;br /&gt;
&lt;br /&gt;
Die oben stehende Schaltung zeigt einen Aufbau wie er - unabhängig wie die Treiberstufe selbst umgesetzt wird - standardmäßig im Schaltplan implementiert ist. Im nächsten Bild ist der Gatekreis so gezeichnet, wie er sich unter realen Bedingungen wirklich darstellt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Gatekreis_Bild2.png|miniatur|ohne|400px|Gatekreis, wie er real auf der PCB vorhanden ist]]&lt;br /&gt;
&lt;br /&gt;
Es ist hier nicht die Frage ob diese parasitären Einflüsse wirklich vorhanden sind, oder nicht, sondern nur wie groß die Werte sind. Hier sind unterschiedliche Einflüsse dargestellt, die sich teilweise gegenseitig beeinflussen.&lt;br /&gt;
&lt;br /&gt;
# R &amp;amp; L zwischen Source und GND: &amp;lt;br&amp;gt;Das &amp;quot;Treiber GND&amp;quot; Signal ist wie deutlich zu sehen DIREKT am Source Anschluß des FETs angeschlossen, und nicht am GND-Fußpunkt des Leistungspfades von &amp;quot;Vcc&amp;quot; zu &amp;quot;GND&amp;quot;.Jeder Zentimeter der Leitung zwischen Source und GND beeinflußt den Gatekreis. Sobald der FET durchschaltet entsteht an den o.g. parasitären Bauteilen (Induktivität und Widerstand) ein Spannungsabfall, der dem Gatesignal entgegenwirkt, und damit z.&amp;amp;nbsp;B. beim Einschalten die am FET anliegende Gatespannung reduziert.&lt;br /&gt;
# R &amp;amp; L zwischen den Treiberausgängen &amp;quot;Gate Signal&amp;quot; und &amp;quot;Treiber GND&amp;quot;: &amp;lt;br&amp;gt;Da der Widerstand im unteren mOhm Bereich liegt kann dieser Einfluß hier ignoriert werden. Die Induktivität im Gatekreis bremst jedoch den Signalanstieg am Gate, sodaß auch das Schaltverhalten beeinflußt wird. Hier besteht auch die Gefahr, daß die Induktivität mit der Gatekapazität einen Schwingkreis bildet.&lt;br /&gt;
# Überkopplung über Ciss:&amp;lt;br&amp;gt; Wenn das Drainpotential z.&amp;amp;nbsp;B. beim abschalten plötzlich von &amp;quot;GND&amp;quot; auf &amp;quot;Vcc&amp;quot; springt, findet über Ciss eine überkopplung auf das Gatesignal statt. Diese Potentialanhebung kann im schlimmsten Fall zum wiedereinschalten des FETs oder zu Oszillationen führen. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FAZIT:&#039;&#039;&#039; &amp;lt;br&amp;gt;Die Schleife zwischen den Treiberausgängen &amp;quot;Gate Signal&amp;quot; und &amp;quot;Treiber GND&amp;quot; muß &#039;&#039;&#039;unbedingt&#039;&#039;&#039; so klein wie möglich gehalten werden. Sitzt der Treiber nicht direkt am Leistungs-FET, ist es empfehlenswert die zwei Kabel so kurz wie möglich halten und zu verdrillen. Auf eine direkte Anbindung an Source bzw. Emitter ist zu achten&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FAQ:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fet wird zu heiß:&lt;br /&gt;
*Verlustleistung zu hoch, Ursache könnte sein daß &lt;br /&gt;
**die Gatespannung zu niedrig ist, &lt;br /&gt;
**die Schaltgeschwindigkeit und damit die Treiberleistung zu gering ist oder  &lt;br /&gt;
**Schwingungen auf der Gateleitung vorhanden sind.&lt;br /&gt;
*Die Kühlung ist unzureichend&lt;br /&gt;
**da keine oder falsche Isolierfolie oder,&lt;br /&gt;
**ein zu kleiner Kühlkörper verwendet wird.&lt;br /&gt;
&lt;br /&gt;
== Leistungselektronik ==&lt;br /&gt;
&lt;br /&gt;
=== Parallelschalten von Leistungstransistoren===&lt;br /&gt;
&lt;br /&gt;
FETs und IGBTs lassen sich relativ einfach parallelschalten, wenn ein paar wenige Grundsätze beachtet werden:&lt;br /&gt;
# Jeder Transistor bekommt einen eigenen Gate-Vorwiderstand bzw. eine eigene R||RD Beschaltung (Gatebeschaltung).&lt;br /&gt;
# Die Gatebeschaltung wird möglichst nahe am Gate- und Source-Anschluß angebracht, und bezüglich Leitungslänge (Induktivität) symmetriert. (Die Zuleitung zu den Gatebeschaltungen ist unkritischer.)&lt;br /&gt;
# Die Leistungsanbindung an Drain und Source - hier zählt &amp;quot;mOhm&amp;quot; und &amp;quot;nH&amp;quot; - wird symmetrisch aufgebaut.&lt;br /&gt;
# Die Schleife &amp;quot;Kondensator - Last - FET - Kondensator&amp;quot; wird minimieren.&lt;br /&gt;
# Jedes Bauteil wird nur zu &amp;lt;80% des maximal Möglichen ausgelastet. (Trotz der hier genannten Maßnahmen können Unsymmetrieen auftreten.)&lt;br /&gt;
&lt;br /&gt;
Sollten auf den Gateleitungen Schwingungen zu beobachten sein, kann es helfen in jede Verbindung von Gatetreiber-Source zum Sourceanschluß des Schalters JE einen Widerstand zu integrieren. Der Wert sollte bei etwa 10..30% des Gatewiderstandes liegen.&lt;br /&gt;
&lt;br /&gt;
=== Stützkondensator ===&lt;br /&gt;
&lt;br /&gt;
==== Einführung ====&lt;br /&gt;
&lt;br /&gt;
Im nachfolgenden Bild ist der &amp;quot;Standard-Schaltplan&amp;quot; einer Endstufe mit ohmscher Last zu sehen. &amp;lt;br&amp;gt;&lt;br /&gt;
Nehmen wir an, der Entwickler hat eine neue Autobatterie mit 13,5V als Stromquelle, und einen Heizwiderstand (L des Widerstandes hier vernachlässigt) mit 0,1 Ohm. Der FET und die je 1m langen Zuleitungen haben zusammen 4mOhm. Dies ergibt einen Maximalstrom von ca. 130A.&lt;br /&gt;
Die Leistung des Heizwiderstandes soll mit einer PWM-Frequenz von 10kHz geregelt werden. In den nachfolgenden Beispielen wird ein Tastverhältnis von 50% fest vorgegeben&lt;br /&gt;
&lt;br /&gt;
[[Bild:Leistungsteil_Bild1.png|miniatur|ohne|400px|Einfache Endstufe wie im Schaltplan gezeichnet]]&lt;br /&gt;
&lt;br /&gt;
Und hier der &#039;&#039;&#039;ideale&#039;&#039;&#039; Spannungs- und Stromverlauf zwischen FET und Lastwiderstand.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Zwischenkreiskondensator_Ideal.png|miniatur|ohne|400px|Idealer Spannung- und Stromverlauf an einer ohmschen Last]]&lt;br /&gt;
&lt;br /&gt;
Jetzt blicken wir der Realität ins Auge, und fügen bei unveränderter Gateansteuerung für die je 1m langen Versorgungsleitungen von- und zu der Batterie eine 1µH große (oder vielmehr kleine) Induktivität in das Simulationsmodell ein (Ohne genaue Kentniss des Lastkreises bzw. der Verdrahtung kann eine parasitäre Induktivität von 10nH/cm angenommen werden):&lt;br /&gt;
&lt;br /&gt;
[[Bild:Zwischenkreiskondensator_Real1.png|miniatur|ohne|400px|Annähernd realer Spannung- und Stromverlauf an der ohmschen Last mit Induktivitäten in der Zuleitung]]&lt;br /&gt;
&lt;br /&gt;
Deutlich ist zu erkennen, daß der Strom gerade einmal 120A, statt 130A erreicht. Die Stromformen ist nicht vergleichbar. &lt;br /&gt;
Des Weiteren erreicht die Spannung am Drain des 30V FETs knapp 900V, was schnell zu einem zerstörten Bauelement führt.&lt;br /&gt;
&lt;br /&gt;
Ist kein Stützkondensator vorhanden, wird der gesammte AC Stromrippel direkt aus der Batterie gezogen, was&lt;br /&gt;
# einen hohen Überspannungsimpuls erzeugt.&lt;br /&gt;
# die Zuleitungen als Sendeantenne mißbraucht (EMV).&lt;br /&gt;
# nicht den gewünschten Strom und Stromverlauf im Widerstand erzeugt.&lt;br /&gt;
# die Batterie selbst mit Mikrozyklen belastet.&lt;br /&gt;
# mit höchster Warscheinlichkeit einen häßlichen Ausschwinvorgang erzeugt (EMV).&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel mit einem Stützkondensator. Die beim Kondensator vorhandenen, parasitären Einflüsse sind in dieser Simulation nicht berücksichtigt um die Komplexität zu minimieren. &amp;lt;br&amp;gt;Designkriterien für den Kondensator folgen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Zwischenkreiskondensator_Real2.png|miniatur|ohne|400px|Annähernd kompensierter Spannung- und Stromverlauf an der ohmschen Last mit Induktivitäten in der Zuleitung ]]&lt;br /&gt;
&lt;br /&gt;
Der Einfluß des Kondensators ist deutlich sichtbar. Der rechteckförmige Stromverlauf ist schon fast wieder erkennbar.... genauso wie eine Schwingneigung im entstandenen LC-Kreis ;-(&lt;br /&gt;
&lt;br /&gt;
==== Design des Stützkondensators ====&lt;br /&gt;
&lt;br /&gt;
Den im Vergleich zwischen den beiden obigen Simulationen fehlende Strom liefert der Kondensator. Die parasitären Elemente dieses Bauteiles haben je nach Typ mehr oder weniger Einfluß in dieser Anwendung.&lt;br /&gt;
&lt;br /&gt;
=====Ersatzschaltbild eines Kondensators=====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Kondensator_Ersatzschaltbild_einfach.png|miniatur|ohne|500px|Vereinfachtes Ersatzschaltbild eines Kondensators]]&lt;br /&gt;
&lt;br /&gt;
Unabhängig vom Kondensatortyp besitzt jeder Kondensator nicht nur die aufgedruckte Kapazität, sondern auch einen internen Widerstand (ESR), und eine interne Induktivität (ESL).&lt;br /&gt;
&lt;br /&gt;
Bei gewickelten Kondenstoren (fast alle Elkos und viele Folienkondensatoren) ist die parasitäre Induktivität aufbaubedingt größer, als bei geschichteten Folienkondensatoren. Für die meisten Anwendungen genügen jedoch Elektrolytkondensatoren, die bezahlbar und mit fast beliebigen Werten verfügbar sind. Sehr häufig ist es einfacher und preiswerter mehrere Elkos parallel zu schalten, als auf Folienkondensatoren umzusteigen  (Achtung: auf symmetrische Anbindung der parallelgeschalteten Bauteile zum Leistungsschalter achten!). Es gibt jedoch einige Anwendungen - meist mit höherer Frequenz oder sehr kurzer Impulszeit (Induktionsheizung [Resonanz-C], elektromagnetische Beschleuniger, Coin-Schrinker, ... ) die die Verwendung von impulsfesten Folienkondensatoren (z.&amp;amp;nbsp;B. MKP10, FKP1,... ) erforderlich machen.&lt;br /&gt;
&lt;br /&gt;
=====Kondensatorauswahl=====&lt;br /&gt;
&lt;br /&gt;
Die Bestimmung der benötigten Kapazität und Anzahl der Kondensatoren hängt ab von...&lt;br /&gt;
&lt;br /&gt;
# Frequenz (Schaltfrequenz * 2!)&lt;br /&gt;
# Flankensteilheit (t_rise, t_fall)&lt;br /&gt;
# Tastverhältnis = Effektive Strombelastung (nicht Mittelwert!)&lt;br /&gt;
# Kühlmöglichkeiten (Verluste im Kondensator, Temperaturerhöhung, Kühlanbindung)&lt;br /&gt;
# ESR&lt;br /&gt;
# Betriebsspannung&lt;br /&gt;
&lt;br /&gt;
Aufgrund der vielfältigen Möglichkeiten wird ein stark vereinfachter Ansatz verfolgt, der für den nicht professionellen Anwendungsfall als ausreichend erscheint. (Verbesserungsvorschläge sind jederzeit erwünscht! bitte über PN)&lt;br /&gt;
&lt;br /&gt;
# Betriebsspannung definieren. Diese Spannung nur zu ca. 80% ausnutzen.&lt;br /&gt;
# Betriebspunkte festlegen: a) Wie lange dauert die Stromentnahme (dt in s), b) wie hoch ist der Peakstrom (I in A) und c) um welchen Wert darf die Spannung dadurch einbrechen (dU in V)? &lt;br /&gt;
# Über die Näherung C = I *dt/dU die dafür benötige Kapazität in Farad berechnen. &amp;lt;br&amp;gt;  Den nächsten, größeren Wert als minimum Wert wählen.&lt;br /&gt;
# Effektivwert der Strombelastung berechnen. -- siehe die folgende Übersicht unten -- Wenn die Stromform im Augenblick unbekannt ist wäre der Versuch angebracht die ungefähre Stromform und damit die Belastung durch eine Simulation zu ermitteln. Ansonsten bleibt nur der Ansatz die Kondensatoren zuerst auf den Peakstrom auszulegen, was bei entsprechendem Geldbeutel der sichere Ansatz ist, und dann Stück für Stück die Anzahl der Kondensatoren zu reduzieren (siehe Punkt 8). &lt;br /&gt;
# Maximalstrom des Kondensators (bei Elkos bei 100Hz) aus dem Datenblatt auslesen. (Bei Folienkondensatoren den nächsten Punkt überspringen)&lt;br /&gt;
# Umrechnen des Datenblattwertes auf die Schaltfrequenz der eigenen Applikation (Umrechnungsbeispiel gilt nur für Elkos!): (von 100Hz auf 10Hz: I[10Hz] = I[100Hz] * 0,8; von 100Hz auf 1kHz: I[1kHz] = I[100Hz] * 1,3. (Eine weitere Vergrößerung für höhere Frequenzen &amp;gt;1kHz ist so nicht zulässig, der 1kHz Wert bleibt bestehen).&lt;br /&gt;
# Wenn die Strombelastung größer als die im Datenblatt angegebene ist, mehrere Kondensatoren parallel schalten oder anderen Kondensatortyp wählen.&lt;br /&gt;
# Kondensator im Betrieb testen. &amp;lt;br&amp;gt;Dazu wird der Kondensator in der Schaltung betrieben und dabei die Minimalspannung, die Maximalspannung und die Temperatur gemessen. Der Spannungseinbruch muß im selbst gewählten Rahmen bleiben, die Maximalspannung darf nie erreicht werden (Sicherheitsabstand!) und die maximal zulässige Betriebstemperatur des Bauteiles darf nicht erreicht werden (Messungen Anfangs in kurzen, dann je nach Änderungsgeschwindigkeit der Temperatur in längeren Abständen aufnehmen, bis sich die Temperatur auch nach einigen Minuten nicht mehr erhöht, sofortiger Abbruch bei erreichen der Maximaltemperatur!). &amp;lt;br&amp;gt; Als Daumenregel gilt... Kann das Bauteil nicht mehr angefaßt werden (Vorsicht bei Spannungen über 40V!) ist es vermutlich überbelastet. ;-)&lt;br /&gt;
# Den Test unter Punkt 8. an mehreren Betriebspunkten wiederholen.&lt;br /&gt;
&lt;br /&gt;
Auslegungskriterium bei Elkos ist die max. Rippelstrombelastbarkeit, bei Folienkondensatoren der erlaubte Spannungsrippel bzw. -einbruch. Nur in den seltensten Fällen wird die Verwendung von einem einzelnen Kondensator alle Probleme lösen. Die Parallelschaltung von mehreren Kondensatoren des gleichen Typs ist daher grundsätzlich zu empfehlen. Lieber mehrere Elko mit dem besten Preis-Leistungs Verhältnis, als ein Spezialtyp.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgend eine Übersicht zur Berechnung des RMS Wertes der häufigsten Signalformen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:RMS-Berechnung.png|miniatur|ohne|400px|Berechnung der RMS-Ströme für die am häufigsten vorkommenden Signalformen]]&lt;br /&gt;
&lt;br /&gt;
=== Anbindung des Stützkondensators an den Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Leistungsteil_Bild2.png|miniatur|ohne|400px|Einfache Endstufe wie mit Verdrahtung und PCB umgesetzt ]]&lt;br /&gt;
&lt;br /&gt;
Im obigen Bild ist der Leistungspfad - bestehend aus Zuleitungen, Kondensator und Endstufe - mit den wirksamen parasitären Einflüssen dargestellt.&lt;br /&gt;
Die dort gezeigten parasitären Elemente zwischen Kondensator und Leistungsschalter stellen den kompletten Leistungszweig dar, der im Schaltvorgang belastet wird.&lt;br /&gt;
&amp;lt;br&amp;gt;Die Optimierung der im Bild gezeigte Schleife - d.h. kürzest mögliche Verbindung mit minimierter Induktivität - muß beim Design oberste Priorität besitzen.&lt;br /&gt;
&lt;br /&gt;
===Kühlung der Leistungshalbleiter===&lt;br /&gt;
&lt;br /&gt;
Beim Betrieb von Leistungshalbleitern wird Abwärme erzeugt. Dies geschieht sowohl im eingeschalteten Zustand, als auch bei jedem Ein- und Ausschalten.&lt;br /&gt;
Um eine Überhitzung und damit eine Zerstörung des Bauteiles zu verhindern muß diese Wärmeenergie entsprechend abgeführt werden. Ab einer Verlustleistung von 1..5W - je nach Größe des Bauteiles - ist es nicht mehr ausreichend wenn das Bauteil diese Energie nur abstrahlt. Am häufigsten werden diese Bauteile auf einen [[Kühlkörper]] geschraubt oder geklemmt, selten geklebt. &lt;br /&gt;
&lt;br /&gt;
Sowohl die Oberfläche des Kühlkörpers als auch des wärmeerzeugende Bauteiles sind nicht eben und weisen eine gewisse Rauhigkeit auf. Dies bedeutet, daß sich die zwei Oberflächen nur punktuell berühren (meist nur mit wenigen Prozent der Gesamtfläche) und nicht auf der gesamten Fläche. &lt;br /&gt;
&lt;br /&gt;
Luft hat eine sehr schlechte Wärmeleitfähigkeit und die Luft, die zwischen den zwei Oberflächen liegt, verhindert eine Wärmeleitung zwischen den zwei Teilen sehr effektiv. Als Daumenwert kann man sagen, daß 1µm Luft in etwa einem absoluten Wärmewiderstand von ca. 1K/W entspricht... jedoch wird es sich nur in den seltensten Fällen nur um einen Mikrometer handeln, sondern meistens deutlich mehr. &lt;br /&gt;
&lt;br /&gt;
====Wärmeleitmaterialien:====&lt;br /&gt;
&lt;br /&gt;
Diese Materialien verbessern die thermische Verbindung zwischen einem Bauteil, das Wärme erzeugt, und dem Bauteil, das diese Wärme durch Wärmestrahlung, Konvektion oder Wärmeleitung in ein Kühlmittel (Zwangskühlung durch Luft oder Wasser) abführt. Diese Materialien werden zwar &amp;quot;wärmeleit&amp;quot; -Folie bzw. -Paste genannt, leiten die Wärme jedoch nicht besonders gut...aber immer noch um mindestens den Faktor 100 besser als Luft... und genau das ist der Grund, warum diese verwendet werden müssen. (Kupfer leitet Wärme um den Faktor 15400 besser als Luft) Die Pasten enthalten meist Öle bzw. Wachse und Fette als Bindemittel und zur besseren Wärmeleitung Metalloxide bzw. Metall- oder Kohlenstoffpartikel als wärmeleitende Füllstoffe. Achtung: Die meisten Pasten neigen zur Austrocknung, verlieren also nach ca. 5 Jahren ihre wärmeleitenden Fähigkeiten und sind nur mehr als &amp;quot;Krümel&amp;quot; sichtbar.&lt;br /&gt;
&lt;br /&gt;
Besondere Beachtung finden die Wärmeleitfolien, die auf beiden Seiten eine thermisch leitfähige, wachsartige Beschichtung aufweisen. Diese Beschichtung schmilzt unter Wärmeeinwirkung auf und füllt die Spalten zwischen den Oberflächen besonders gut. Folien dieser Art werden &amp;quot;Phase Change&amp;quot; Material genannt. Dieser erste Schmelzprozeß erfordert unter Umständen ein Nachspannen des Bauteiles nach dem ersten Aufheizen, da sich durch den Druck die Schichtdicke verringern kann. Achtung: VOR dem Aufheizen und Nachspannen hat die Wärmeleitfähigkeit noch nicht die möglichen Minimalwerte erreicht. Zum Teil ist die Wärmeanbindung noch um Faktoren schlechter, daher beim ersten Einschalten noch nicht voll belasten.&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht über die Wärmeleitfähigkeit von verschiedenen Materialien&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Material || Wärmeleitfähigkeit&amp;lt;br&amp;gt; [W/(m*K)] || Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|Kupfer		|| 370 || schwankt zwischen ca. 350..400&lt;br /&gt;
|-&lt;br /&gt;
|Aluminium		|| 220 || &lt;br /&gt;
|-&lt;br /&gt;
|Stahl		|| 50 || hochlegierte Stähle &amp;lt;20&lt;br /&gt;
|-&lt;br /&gt;
|Eisen          	|| 80||&lt;br /&gt;
|-&lt;br /&gt;
|Silber		|| 430 ||&lt;br /&gt;
|-&lt;br /&gt;
|Zinn		||  67 ||&lt;br /&gt;
|-&lt;br /&gt;
|Blei		|| 35||&lt;br /&gt;
|-&lt;br /&gt;
|Wärmeleitpasten	|| 3..10 ||&lt;br /&gt;
|-&lt;br /&gt;
|Luft		|| 0,024 ||&lt;br /&gt;
|-&lt;br /&gt;
|Wasser		|| 0,6||&lt;br /&gt;
|-&lt;br /&gt;
|Öl		|| 0,15||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht über die Wärmeleitfähigkeit von AUSGEWÄHLTEN Isolierfolien  um dem Nutzer die Entscheidung zu erleichtern. Wenn jemand gute und bezahlbare Folien findet/kennt, bitte hier mit allen Daten angeben. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Material || Wärmeleitfähigkeit&amp;lt;br&amp;gt;[W/(m*K)] || Größe / Menge ||Bezugsquelle || ungefähre&amp;lt;br&amp;gt;Kosten&lt;br /&gt;
|-&lt;br /&gt;
|WÄRMELEITFOL.86/82 ROT ||6,5 ||100x100x0,25mm || C|| 14€&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Hinweis: &amp;lt;br&amp;gt; Die Wärmeleitfähigkeit von Folien bezieht sich ausschließlich auf die Folie selbst. Selbst unter besten Bedingungen wird man die genannten Werte nicht erreichen, da durch den Übergang vom Bauteil in die Folie und von dort in den Kühlkörper ein zusätzlicher Wärmewiderstand entsteht. Eine Verschlechterung von ca. 30% oder mindestens 0,5K/W bei einem TO220-Bauteil ist zu erwarten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht über die Wärmeleitfähigkeit von AUSGEWÄHLTEN Wärmeleitpasten um dem Nutzer die Entscheidung zu erleichtern:&amp;lt;br&amp;gt; Wenn jemand gute und bezahlbare Pasten findet/kennt, bitte hier mit allen Daten angeben. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Material || Wärmeleitfähigkeit&amp;lt;br&amp;gt;[W/(m*K)] || Größe / Menge ||Bezugsquelle || ungefähre&amp;lt;br&amp;gt;Kosten&lt;br /&gt;
|-&lt;br /&gt;
|Artic Silver  	||8,9  ||  3,5g || C || 13,95€ &lt;br /&gt;
|-&lt;br /&gt;
|Standard Pasten auf Silikonbasis ||3,0|| 3g..150g|| C / Rei / ... || wenige €/g &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Montagerichtlinien:&lt;br /&gt;
* Die so beliebten Bohrungen in eine blanken Kühlfahne des Transistors wie z.&amp;amp;nbsp;B. beim TO-220 Gehäuse suggerieren eine fantastisch einfache Montierbarkteit. Wird die Schraube aber nur ein klein wenig zu fest angezogen, verformt sich das Kupfer der Kühlfahne und sorgt dafür, daß sich der Kunststoff umpresste Teil des Transistors ein klein wenig abhebt. Dies hat eine deutlich schlechtere Wärmeanbindung zur Folge. Die isolierte Bohrung bei vollständig umspritzten - nicht zu verwechseln mit auch auf der Rückseite isolierten -  Bauteilen umgeht dieses Risiko, genauso wie der nachfolgende Montagevorschlag.&lt;br /&gt;
* Bei hohen Verlustleistungen ist zu empfehlen, das Bauteil gegenüber der Stelle aufzupressen, an der die Verlustleistung entsteht, also direkt auf dem Kunststoff des Transistors über dem Chip.&lt;br /&gt;
* Werden mehrere Bauteile parallel auf dem Kühlkörper montiert sollte zwischen den Bauteilen MINDESTENS soviel Abstand vorgesehen werden, wie die Breite des Bauteiles beträgt. Dies vermindert die gegenseitige, thermische Beeinflussing der Bauteile und ermöglicht eine bessere Wärmeabfuhr&lt;br /&gt;
* Zur Montage mehrerer Bauteile eignet sich eine Metallschiene die direkt auf den Kunststoff drückt sehr gut. Zwischen &#039;&#039;&#039;jedem&#039;&#039;&#039; Bauteil ist ein Verschraubungspunkt vorzusehen, damit jedes Bauteil gleichmäßig aufgedrückt wird.&lt;br /&gt;
* Vor dem Aufbringen der Paste/Folie sowohl Bauteil als auch Kühlkörper mit Alkohol reinigen.&lt;br /&gt;
* Die Wärmeleitwerte für eine Paste beziehen sich auf eine meist nicht genannte  aber trotzdem MINIMALE Schichtdicke. Diese gelingt relativ reproduzierbar, wenn die Paste mit einem flachen Gegenstand (Rasierklinge, Lineal, ...) aufgebracht, verteilt und vorsichtig abgezogen wird, sodaß nur eine &#039;&#039;&#039;dünne&#039;&#039;&#039; Schicht auf dem Kühlkörper verbleibt. Dies erfordert einige Übung. Paste aufhäufeln, Bauteil eindrücken und befestigen erzielt bei weitem nicht die optimale Kühlleistung.&lt;br /&gt;
&lt;br /&gt;
==== Kühlkörper====&lt;br /&gt;
&lt;br /&gt;
Siehe Artikel [[Kühlkörper]].&lt;br /&gt;
&lt;br /&gt;
== Zusätzliche Hinweise ==&lt;br /&gt;
&lt;br /&gt;
Anregungen oder Fragen auch gerne per Email an [http://www.mikrocontroller.net/user/show/powerfreak Powerfreak]. Dieser Artikel kann dadurch regelmäßig erweitert und ggf. durch ein FAQ ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[IGBT]]&lt;br /&gt;
* [[FET]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]] [[Kategorie:Leistungselektronik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Beispiel_LS_Treiber2_LogicLevel.png&amp;diff=58788</id>
		<title>Datei:Beispiel LS Treiber2 LogicLevel.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Beispiel_LS_Treiber2_LogicLevel.png&amp;diff=58788"/>
		<updated>2011-07-21T23:16:13Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Diskreter LS-Treibern von Logic Level&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diskreter LS-Treibern von Logic Level&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=42043</id>
		<title>Luftdrucksensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=42043"/>
		<updated>2010-01-07T15:05:42Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Distributoren für BMP085&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Luftdruck auf der Erdoberfläche liegt bei etwa 1000 hPa (hektoPascal) = 1000 mBar. In technischen Anwendungen werden Drücke oft in kPa (kiloPascal) angegeben, das sind demzufolge 100 kPa.&lt;br /&gt;
&lt;br /&gt;
=== MS5534 ===&lt;br /&gt;
Aktuell ist der MS5534C. Hergestellt von [http://www.intersema.ch/ Intersema]. Dort findet sich auch das [http://www.intersema.ch/products/guide/calibrated/ms5534c/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Sensor gibt seine Werte digital aus und enthält auch einen Temperatursensor für die nötige Temperaturkompensationsberechnung. Diese muss der Anwender selber machen, die Beschreibung dazu findet sich im Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgungsspannung: 2,2 ... 3,6V&lt;br /&gt;
* Auflösung: 0.1 mbar&lt;br /&gt;
* Genauigkeit absolut bei 25°C: +-1,5 mbar&lt;br /&gt;
* Messfrequenz: ca. 28 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Kalibriert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Lichtempfindlich&lt;br /&gt;
* Eigenes Protokoll über 3 Adern, kein Bussystem&lt;br /&gt;
* Benötigt Oszillator mit 32768 kHZ&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* ELV 20,47&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/20869 C-Code für PIC]&lt;br /&gt;
&lt;br /&gt;
=== MPX4115A ===&lt;br /&gt;
Analoger Drucksensor von Freescale (früher Motorola). Dort findet sich auch das [http://www.freescale.com/files/sensors/doc/data_sheet/MPX4115A.pdf Datenblatt]. &lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Der Sensor gibt 45.9mV/kPa aus. &lt;br /&gt;
* Versorgungsspannung: 5V&lt;br /&gt;
* Genauigkeit (0-85°C): +-15 mbar&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* teilweise (0..90°C) temperaturkompensiert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* geringe Genauigkeit im Vergleich zu den anderen Sensoren&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Reichelt 18,45&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SCP1000 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdruck-Sensor von VTI.&lt;br /&gt;
&lt;br /&gt;
[http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 2,4 bis 3,3 V&lt;br /&gt;
* Auflösung: 0,015 mbar&lt;br /&gt;
* Genauigkeit absolut (10 - 40°C): 1,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 9 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* SPI- oder I2C-Schnittstelle&lt;br /&gt;
* fertig kalibriert&lt;br /&gt;
* bis zu 17-bit Auflösung (entspricht 8cm)&lt;br /&gt;
* keine komplexen Kompensationsberechnungen beim Auslesen nötig&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kleines SMD-Gehäuse (QFN-ähnlich), darf nicht mit Heißluft oder Lötkolben gelötet werden&lt;br /&gt;
* Beim Hersteller unter &amp;quot;Obsolete products&amp;quot; gelistet, aber noch gut verfügbar&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Aevum-Mechatronik (ca. 17 EUR)&lt;br /&gt;
* Breakout-Boards bei Sparkfun&lt;br /&gt;
&lt;br /&gt;
=== BMP085 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdrucksensor von Bosch Sensortec.&lt;br /&gt;
&lt;br /&gt;
[http://www.bosch-sensortec.com/content/language1/downloads/BST-BMP085-DS000-05.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 1,8 bis 3,6 V&lt;br /&gt;
* Auflösung: 0,01 mbar&lt;br /&gt;
* Genauigkeit absolut (0-65°C): max. Fehler +-2,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 220 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* I2C-Schnittstelle&lt;br /&gt;
* fertig kalibriert&lt;br /&gt;
* hohe Auflösung und Genauigkeit&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* aufwendige Kompensationsberechnungen nötig&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Digikey (ca. 8 EUR)&lt;br /&gt;
* [http://jeelabs.org/pp1 Breakout-Board von Jeelabs]&lt;br /&gt;
* Rutronik&lt;br /&gt;
* ACAL&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://code.jeelabs.org/viewvc/svn/jeelabs/trunk/libraries/Ports/ Jeelabs Ports Library] C++ mit Floatingpoint&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41853</id>
		<title>Luftdrucksensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41853"/>
		<updated>2010-01-03T12:10:59Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: BMP085 Code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Luftdruck auf der Erdoberfläche liegt bei etwa 1000 hPa (hektoPascal) = 1000 mBar. In technischen Anwendungen werden Drücke oft in kPa (kiloPascal) angegeben, das sind demzufolge 100 kPa.&lt;br /&gt;
&lt;br /&gt;
=== MS5534 ===&lt;br /&gt;
Aktuell ist der MS5534C. Hergestellt von [http://www.intersema.ch/ Intersema]. Dort findet sich auch das [http://www.intersema.ch/products/guide/calibrated/ms5534c/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Sensor gibt seine Werte digital aus und enthält auch einen Temperatursensor für die nötige Temperaturkompensationsberechnung. Diese muss der Anwender selber machen, die Beschreibung dazu findet sich im Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgungsspannung: 2,2 ... 3,6V&lt;br /&gt;
* Auflösung: 0.1 mbar&lt;br /&gt;
* Genauigkeit absolut bei 25°C: +-1,5 mbar&lt;br /&gt;
* Messfrequenz: ca. 28 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Kalibriert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Lichtempfindlich&lt;br /&gt;
* Eigenes Protokoll über 3 Adern, kein Bussystem&lt;br /&gt;
* Benötigt Oszillator mit 32768 kHZ&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* ELV 20,47&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/20869 C-Code für PIC]&lt;br /&gt;
&lt;br /&gt;
=== MPX4115A ===&lt;br /&gt;
Analoger Drucksensor von Freescale (früher Motorola). Dort findet sich auch das [http://www.freescale.com/files/sensors/doc/data_sheet/MPX4115A.pdf Datenblatt]. &lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Der Sensor gibt 45.9mV/kPa aus. &lt;br /&gt;
* Versorgungsspannung: 5V&lt;br /&gt;
* Genauigkeit (0-85°C): +-15 mbar&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* teilweise (0..90°C) temperaturkompensiert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* geringe Genauigkeit im Vergleich zu den anderen Sensoren&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Reichelt 18,45&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SCP1000 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdruck-Sensor von VTI.&lt;br /&gt;
&lt;br /&gt;
[http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 2,4 bis 3,3 V&lt;br /&gt;
* Auflösung: 0,015 mbar&lt;br /&gt;
* Genauigkeit absolut (10 - 40°C): 1,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 9 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* SPI- oder I2C-Schnittstelle&lt;br /&gt;
* fertig kalibriert&lt;br /&gt;
* bis zu 17-bit Auflösung (entspricht 8cm)&lt;br /&gt;
* keine komplexen Kompensationsberechnungen beim Auslesen nötig&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kleines SMD-Gehäuse (QFN-ähnlich), darf nicht mit Heißluft oder Lötkolben gelötet werden&lt;br /&gt;
* Beim Hersteller unter &amp;quot;Obsolete products&amp;quot; gelistet, aber noch gut verfügbar&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Aevum-Mechatronik (ca. 17 EUR)&lt;br /&gt;
* Breakout-Boards bei Sparkfun&lt;br /&gt;
&lt;br /&gt;
=== BMP085 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdrucksensor von Bosch Sensortec.&lt;br /&gt;
&lt;br /&gt;
[http://www.bosch-sensortec.com/content/language1/downloads/BST-BMP085-DS000-05.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 1,8 bis 3,6 V&lt;br /&gt;
* Auflösung: 0,01 mbar&lt;br /&gt;
* Genauigkeit absolut (0-65°C): max. Fehler +-2,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 220 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* I2C-Schnittstelle&lt;br /&gt;
* fertig kalibriert&lt;br /&gt;
* hohe Auflösung und Genauigkeit&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* aufwendige Kompensationsberechnungen nötig&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Digikey (ca. 8 EUR)&lt;br /&gt;
* [http://jeelabs.org/pp1 Breakout-Board von Jeelabs]&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://code.jeelabs.org/viewvc/svn/jeelabs/trunk/libraries/Ports/ Jeelabs Ports Library] C++ mit Floatingpoint&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41851</id>
		<title>Luftdrucksensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41851"/>
		<updated>2010-01-03T12:06:30Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: BMP085 beschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Luftdruck auf der Erdoberfläche liegt bei etwa 1000 hPa (hektoPascal) = 1000 mBar. In technischen Anwendungen werden Drücke oft in kPa (kiloPascal) angegeben, das sind demzufolge 100 kPa.&lt;br /&gt;
&lt;br /&gt;
=== MS5534 ===&lt;br /&gt;
Aktuell ist der MS5534C. Hergestellt von [http://www.intersema.ch/ Intersema]. Dort findet sich auch das [http://www.intersema.ch/products/guide/calibrated/ms5534c/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Sensor gibt seine Werte digital aus und enthält auch einen Temperatursensor für die nötige Temperaturkompensationsberechnung. Diese muss der Anwender selber machen, die Beschreibung dazu findet sich im Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgungsspannung: 2,2 ... 3,6V&lt;br /&gt;
* Auflösung: 0.1 mbar&lt;br /&gt;
* Genauigkeit absolut bei 25°C: +-1,5 mbar&lt;br /&gt;
* Messfrequenz: ca. 28 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Kalibriert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Lichtempfindlich&lt;br /&gt;
* Eigenes Protokoll über 3 Adern, kein Bussystem&lt;br /&gt;
* Benötigt Oszillator mit 32768 kHZ&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* ELV 20,47&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/20869 C-Code für PIC]&lt;br /&gt;
&lt;br /&gt;
=== MPX4115A ===&lt;br /&gt;
Analoger Drucksensor von Freescale (früher Motorola). Dort findet sich auch das [http://www.freescale.com/files/sensors/doc/data_sheet/MPX4115A.pdf Datenblatt]. &lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Der Sensor gibt 45.9mV/kPa aus. &lt;br /&gt;
* Versorgungsspannung: 5V&lt;br /&gt;
* Genauigkeit (0-85°C): +-15 mbar&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* teilweise (0..90°C) temperaturkompensiert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* geringe Genauigkeit im Vergleich zu den anderen Sensoren&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Reichelt 18,45&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SCP1000 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdruck-Sensor von VTI.&lt;br /&gt;
&lt;br /&gt;
[http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 2,4 bis 3,3 V&lt;br /&gt;
* Auflösung: 0,015 mbar&lt;br /&gt;
* Genauigkeit absolut (10 - 40°C): 1,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 9 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* SPI- oder I2C-Schnittstelle&lt;br /&gt;
* fertig kalibriert&lt;br /&gt;
* bis zu 17-bit Auflösung (entspricht 8cm)&lt;br /&gt;
* keine komplexen Kompensationsberechnungen beim Auslesen nötig&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kleines SMD-Gehäuse (QFN-ähnlich), darf nicht mit Heißluft oder Lötkolben gelötet werden&lt;br /&gt;
* Beim Hersteller unter &amp;quot;Obsolete products&amp;quot; gelistet, aber noch gut verfügbar&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Aevum-Mechatronik (ca. 17 EUR)&lt;br /&gt;
* Breakout-Boards bei Sparkfun&lt;br /&gt;
&lt;br /&gt;
=== BMP085 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdrucksensor von Bosch Sensortec.&lt;br /&gt;
&lt;br /&gt;
[http://www.bosch-sensortec.com/content/language1/downloads/BST-BMP085-DS000-05.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 1,8 bis 3,6 V&lt;br /&gt;
* Auflösung: 0,01 mbar&lt;br /&gt;
* Genauigkeit absolut (0-65°C): max. Fehler +-2,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 220 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* I2C-Schnittstelle&lt;br /&gt;
* fertig kalibriert&lt;br /&gt;
* hohe Auflösung und Genauigkeit&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* aufwendige Kompensationsberechnungen nötig&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Digikey (ca. 8 EUR)&lt;br /&gt;
* [http://jeelabs.org/pp1 Breakout-Board von Jeelabs]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41849</id>
		<title>Luftdrucksensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41849"/>
		<updated>2010-01-03T11:46:21Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: mehr Daten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Luftdruck auf der Erdoberfläche liegt bei etwa 1000 hPa (hektoPascal) = 1000 mBar. In technischen Anwendungen werden Drücke oft in kPa (kiloPascal) angegeben, das sind demzufolge 100 kPa.&lt;br /&gt;
&lt;br /&gt;
=== MS5534 ===&lt;br /&gt;
Aktuell ist der MS5534C. Hergestellt von [http://www.intersema.ch/ Intersema]. Dort findet sich auch das [http://www.intersema.ch/products/guide/calibrated/ms5534c/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Sensor gibt seine Werte digital aus und enthält auch einen Temperatursensor für die nötige Temperaturkompensationsberechnung. Diese muss der Anwender selber machen, die Beschreibung dazu findet sich im Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgungsspannung: 2,2 ... 3,6V&lt;br /&gt;
* Auflösung: 0.1 mbar&lt;br /&gt;
* Genauigkeit absolut bei 25°C: +-1,5 mbar&lt;br /&gt;
* Messfrequenz: ca. 28 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Kalibriert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Lichtempfindlich&lt;br /&gt;
* Eigenes Protokoll über 3 Adern, kein Bussystem&lt;br /&gt;
* Benötigt Oszillator mit 32768 kHZ&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* ELV 20,47&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/20869 C-Code für PIC]&lt;br /&gt;
&lt;br /&gt;
=== MPX4115A ===&lt;br /&gt;
Analoger Drucksensor von Freescale (früher Motorola). Dort findet sich auch das [http://www.freescale.com/files/sensors/doc/data_sheet/MPX4115A.pdf Datenblatt]. &lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Der Sensor gibt 45.9mV/kPa aus. &lt;br /&gt;
* Versorgungsspannung: 5V&lt;br /&gt;
* Genauigkeit (0-85°C): +-15 mbar&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* teilweise (0..90°C) temperaturkompensiert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* geringe Genauigkeit im Vergleich zu den anderen Sensoren&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Reichelt 18,45&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SCP1000 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdruck-Sensor von VTI.&lt;br /&gt;
&lt;br /&gt;
[http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Daten:&lt;br /&gt;
* Versorgung mit 2,4 bis 3,3 V&lt;br /&gt;
* Auflösung: 0,015 mbar&lt;br /&gt;
* Genauigkeit absolut (10 - 40°C): 1,5 mbar&lt;br /&gt;
* Messfrequenz (reduzierte Auflösung): max 9 Hz&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* SPI- oder I2C-Schnittstelle&lt;br /&gt;
* bis zu 17-bit Auflösung (entspricht 8cm)&lt;br /&gt;
* keine komplexen Kompensationsberechnungen beim Auslesen nötig&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kleines SMD-Gehäuse (QFN-ähnlich), darf nicht mit Heißluft oder Lötkolben gelötet werden&lt;br /&gt;
* Beim Hersteller unter &amp;quot;Obsolete products&amp;quot; gelistet, aber noch gut verfügbar&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Aevum-Mechatronik (ca. 17 EUR)&lt;br /&gt;
* Breakout-Boards bei Sparkfun&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41846</id>
		<title>Luftdrucksensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Luftdrucksensor&amp;diff=41846"/>
		<updated>2010-01-03T11:12:44Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Daten MS5534 erweitert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Luftdruck auf der Erdoberfläche liegt bei etwa 1000 hPa (hektoPascal) = 1000 mBar. In technischen Anwendungen werden Drücke oft in kPa (kiloPascal) angegeben, das sind demzufolge 100 kPa.&lt;br /&gt;
&lt;br /&gt;
=== MS5534 ===&lt;br /&gt;
Aktuell ist der MS5534C. Hergestellt von [http://www.intersema.ch/ Intersema]. Dort findet sich auch das [http://www.intersema.ch/site/technical/ms5534.php Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Der Sensor gibt seine Werte digital aus und enthält auch einen Temperatursensor für die nötige Temperaturkompensationsberechnung. Diese muss der Anwender selber machen, die Beschreibung dazu findet sich im Datenblatt.&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung: 2,2 ... 3,6V&lt;br /&gt;
Auflösung: 0.1 mbar&lt;br /&gt;
Genauigkeit absolut bei 25°C: +-1,5 mbar&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/20869 C-Code für PIC]&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Kalibriert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Lichtempfindlich&lt;br /&gt;
* Eigenes Protokill über 3 Adern, kein Bussystem&lt;br /&gt;
* Benötigt Oszillator mit 32768 kHZ&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* ELV 20,47&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== MPX4115A ===&lt;br /&gt;
Analoger Drucksensor von Freescale (früher Motorola). Dort findet sich auch das [http://www.freescale.com/files/sensors/doc/data_sheet/MPX4115A.pdf Datenblatt]. &lt;br /&gt;
&lt;br /&gt;
Der Sensor gibt 45.9mV/kPa aus. &lt;br /&gt;
Versorgungsspannung: 5V.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* teilweise (0..90°C) temperaturkompensiert&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Reichelt 18,45&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SCP1000 ===&lt;br /&gt;
&lt;br /&gt;
Digitaler Absolutdruck-Sensor von VTI.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* SPI- oder I2C-Schnittstelle&lt;br /&gt;
* bis zu 17-bit Auflösung (entspricht 8cm)&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kleines SMD-Gehäuse&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&lt;br /&gt;
* Aevum-Mechatronik&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Drucksensor&amp;diff=41845</id>
		<title>Drucksensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Drucksensor&amp;diff=41845"/>
		<updated>2010-01-03T11:08:17Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Link zu Luftdrucksensor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Drucksensoren sind oft in Mikromechanik-Technik auf Siliziumchips ausgeführt.&lt;br /&gt;
*Differenzdruck-Sensoren &lt;br /&gt;
messen den Druckunterschied zwischen zwei Anschlußstutzen&lt;br /&gt;
* Absolutdrucksensoren&lt;br /&gt;
messen den Druck im Vergleich zu einem abgeschlossenen Hohlraum&lt;br /&gt;
&lt;br /&gt;
Für Luftdruckmessungen oder barometische Höhenmesser siehe [[Luftdrucksensor]].&lt;br /&gt;
&lt;br /&gt;
Hersteller:&lt;br /&gt;
* Siemens, Philips  &amp;quot;KPY...&amp;quot;&lt;br /&gt;
* Motorola / SenSym &amp;quot;SX...&amp;quot;, &amp;quot;SCX...&amp;quot;&lt;br /&gt;
früher auch mal &lt;br /&gt;
* National Semiconductor ( Datenbuch 1974 ) &amp;quot;LX...&amp;quot;&lt;br /&gt;
Oft findet man Bauanleitungen mit Drucksensoren aus der Kraftfahrzeugelektronik: &lt;br /&gt;
* Bosch-Sensoren&lt;br /&gt;
&lt;br /&gt;
Da diese Sensoren sehr temperaturabhängig sind, muß der Temperaturgang kompensiert werden.&lt;br /&gt;
Eine kompensierte Schaltung mit einem KP100 von Philips, der auch einen Temperatursensor auf dem Chip enthält, kann Höhenunterschiede von 10 cm im Luftdruck anzeigen. Armbanduhren mit integriertem Drucksensor zeigen die Höhe mit 5m Auflösung an.&lt;br /&gt;
Eine weitere Anwendung sind Einbruchsalarmanlagen, die auf die Druckschwankung beim Türöffnen reagieren. &lt;br /&gt;
Der Überschallknall der Concorde beim Beschleunigen über dem Atlantik konnte mit empfindlichen Drucksensor-Mikrophonen in Bayern nachgewiesen werden - mit entsprechender Zeitverzögerung.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Feuchtesensor&amp;diff=41844</id>
		<title>Feuchtesensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Feuchtesensor&amp;diff=41844"/>
		<updated>2010-01-03T11:05:40Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Ethersex-Ansteuerung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feuchtigkeitssensoren bzw. Feuchtesensoren arbeiten meist nach dem Prinzip eines feuchtigkeitsabhängigen Kondensators.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Typen==&lt;br /&gt;
&lt;br /&gt;
===Dallas/Maxim DS1923===&lt;br /&gt;
Eigentlich ein Temperatur-&amp;amp; Feuchtelogger, aber auch nur als Sensor verwendbar.&amp;lt;br&amp;gt;&lt;br /&gt;
Edelstahl-1wire-iButton mit Lithiumzelle&amp;lt;br&amp;gt;&lt;br /&gt;
Gibt es nicht mehr als Sample, kostet etwa 50 Euro bei www.spezial.de.&amp;lt;br&amp;gt;&lt;br /&gt;
Hygrochron Temperature/Humidity Logger iButton with 8KB Data-Log Memory&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4379/t/al&lt;br /&gt;
&lt;br /&gt;
===Philips H1 2322 691 90001===&lt;br /&gt;
vom Reichelt (Datenblatt dort downloaden):&amp;lt;br&amp;gt;&lt;br /&gt;
jetzt von vishay hergestellt: http://www.vishay.com/docs/29001/23226919.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
Applikation von Valvo dazu:&lt;br /&gt;
http://docs.poulter.de/Elektronik/Sensoren/Luftfeuchtesensor%20VALVO.pdf&amp;lt;br&amp;gt;&lt;br /&gt;
FEUCHTESENSOR Sensor für Feuchtigkeit  € 10.00&amp;lt;br&amp;gt;&lt;br /&gt;
Feuchtesensor zur Messung und Regelung der relativen Luftfeuchte&amp;lt;br&amp;gt;&lt;br /&gt;
Kapazität: 122pF +/-15%&lt;br /&gt;
Empf.(Frel=43%): 0,4pF/%Frel&amp;lt;br&amp;gt;&lt;br /&gt;
Meßfrequenz: 1kHz...1MHz&lt;br /&gt;
Meßbereich: 10%...90%&amp;lt;br&amp;gt;&lt;br /&gt;
Top: 0°C...+85°C&lt;br /&gt;
Vmax: 15V&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Informationen zu diesem Artikel finden Sie in den Datenblättern &lt;br /&gt;
&lt;br /&gt;
Auswerten z.B. mit einem Oszillator muss man selbst!&lt;br /&gt;
&lt;br /&gt;
===KM33 von Innovative Computer===&lt;br /&gt;
ab € 43,00&amp;lt;br&amp;gt;&lt;br /&gt;
Schuricht 115-245057&amp;lt;br&amp;gt;&lt;br /&gt;
vermutlich auch nur ein variabler Kondensator&lt;br /&gt;
&lt;br /&gt;
===HIH-3610, HIH3610===&lt;br /&gt;
von Honeywell (sehr linear, aber über € 23,00)&amp;lt;br&amp;gt;&lt;br /&gt;
analoger Ausgang 0..4V&amp;lt;br&amp;gt;&lt;br /&gt;
Versionen:&lt;br /&gt;
* -001 RM 2,54 unkalibriert&lt;br /&gt;
* -002 RM 1,27 unkalibriert&lt;br /&gt;
* -003 RM 2,54 kalibriert&lt;br /&gt;
* -004 RM 1,27 kalibriert&lt;br /&gt;
Nachtrag: sind abgekündigt, Nachfolger:&amp;lt;br&amp;gt;&lt;br /&gt;
HIH-4000-001, HIH4000-001 und HIH-4000-003, HIH4000-003&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittlerweile ist der HIH-5030/31 aktuell. (Stand: Sep. 2009)&lt;br /&gt;
&lt;br /&gt;
http://catalog.sensing.honeywell.com/ss.asp?FAM=humiditymoisture &amp;lt;p&amp;gt;&lt;br /&gt;
Für den Sensor HIH-3605 gibt es eine Applikation, in der der Sensor an den 1-wire Bus von Dallas angeschlossen wird. Der Sensor läßt sich so mit einer verdrillten Leitung betreiben und auslesen.&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.sensorsmag.com/articles/0800/62/&lt;br /&gt;
&lt;br /&gt;
===H25K5A===&lt;br /&gt;
von Sencera (&amp;lt;4€ bei CSD)&amp;lt;br&amp;gt;&lt;br /&gt;
Variabler Widerstand bei Wechselspannung.&amp;lt;br&amp;gt;&lt;br /&gt;
Bereich 0..+60°C, 20..90%RH. Achtung: auch Lagerung nur bis 90%RH&amp;lt;br&amp;gt;&lt;br /&gt;
Temperaturkompensierte Messung über Spannungsteiler mit handelsüblichem NTC.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HS1101===&lt;br /&gt;
von Humirel (~14€ bei CSD)&amp;lt;br&amp;gt;&lt;br /&gt;
Variable Kapazität, 164..200pF.&amp;lt;br&amp;gt;&lt;br /&gt;
Temperaturbereich -40..+100°C.&amp;lt;br&amp;gt;&lt;br /&gt;
Temperaturkompensierter Oszillator mit CMOS-Timer 555 im Datasheet.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===INSED===&lt;br /&gt;
* HIH3602A Feuchtigkeit und Temperatur (ab € 79,00) bei RS-Components&lt;br /&gt;
* HIH3602C Feuchtigkeit und Temperatur (ab € 82,00) bei RS-Components&lt;br /&gt;
&lt;br /&gt;
Bezugsquellen:&amp;lt;br&amp;gt;&lt;br /&gt;
INSED GmbH + Co KG Sensoren für die Industrie  Kronenstr 10  70794 Filderstadt  0711-9972758 Fax 9972762&amp;lt;br&amp;gt;&lt;br /&gt;
IBA GmbH Ingenieurbüro für Sensorik&lt;br /&gt;
Am Sandborn 14  63500 Seligenstadt  06182 95980&amp;lt;br&amp;gt;&lt;br /&gt;
Schuricht  RS-Components  Farnell&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===www.vaisala.be===&lt;br /&gt;
* 17204HM-humichip- mit Temp-Sensor KTY85-110 (special selection), analog 0..1V&amp;lt;br&amp;gt;&lt;br /&gt;
* 17205HM ohne Temp-Sensor analog 0..1V&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Datenblatt fand ich nicht auf deren Homepage, aber im Forum:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-15717.html#48616 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vermutlich verkaufen sie lieber fertige Module:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.vaisala.com/businessareas/instruments/products/humidity&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.vaisala.com/businessareas/instruments/products/humidity/modules/oemmodules&lt;br /&gt;
&lt;br /&gt;
===Sensirion===&lt;br /&gt;
Von [http://www.sensirion.com Sensirion] gibt es eine ganze Reihe digitaler kombinierter Feuchte/Temperatursensoren (I2C-ähnlich, digital 2-wire output): SHT10  SHT11  SHT15  SF1  SHT71  SHT75  EvaKit EK-H2  EK-H3&lt;br /&gt;
* Bezugsquellen: http://www.micromaus.de, http://www.driesen-kern.de/ und CSD (SHT11, 20€)&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/48590#372123 C-Bibliothek] von Timo Dittmar im Forum&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/145736 C-Bibliothek] in der Codesammlung&lt;br /&gt;
* [http://www.ethersex.de/index.php/SHT Fertige Ansteuerung durch AVR ATMega in Ethersex]&lt;br /&gt;
* Applikationnotes (PDF) [http://www.sensirion.com/images/getFile?id=91 #91] und [http://www.sensirion.com/images/getFile?id=95 #95] mit C-Beispielen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Standardbauelemente&amp;diff=41802</id>
		<title>Standardbauelemente</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Standardbauelemente&amp;diff=41802"/>
		<updated>2010-01-02T02:24:44Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: Link zu Temperatursensor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gerade Neulinge kennen das Problem: Man hat eine tolle Schaltung mit vielen Operationsverstärkern, Spannungsreglern, Logikbausteinen, ADCs, was auch immer entwickelt und jetzt geht&#039;s an die Realisierung.&lt;br /&gt;
&lt;br /&gt;
Aber welche Bausteine nehmen unter dem Wust der Angebote? Also erstmal auf die Seiten der Hersteller und die Produktpalette durchforsten. Nach einigen Stunden gewissenhafter Recherche hat man dann endlich alle Bauteile beisammen und will bestellen. Und dann kommt das böse Erwachen: Einige Bauelemente gibt&#039;s nur bei Reichelt, andere nur bei Conrad. Farnell hat zwar das meiste, aber da kann man als Privatperson leider nicht bestellen. Manche ICs bekommt man nur in 1000er Stückzahlen oder sind halt einfach nur viel zu teuer.&lt;br /&gt;
&lt;br /&gt;
Nach einigen Jahren praktischer Erfahrung hat man dann seine &amp;quot;Standardbauelemente&amp;quot;, die man immer wieder verwendet. Dieser Artikel soll helfen andere von dieser Erfahrung profitieren zu lassen. Ähnliche Anregungen findet man auch in der de.sci.electronics-FAQ: Grundausstattung des Bastlers [[http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.2]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Hier soll eine Liste von häufig anzutreffenden, preiswerten und verfügbaren Standardbauelementen entstehen. Diese Liste soll knapp und bündig sein, für technische Daten wird auf die Datenblätter verwiesen. Hier gilt: &amp;quot;weniger ist mehr&amp;quot;, exotische Bauelemente sind also unerwünscht. Für hier gelistete Typen sollte gelten:&lt;br /&gt;
* für Privatpersonen verfügbar&lt;br /&gt;
* preiswert (nicht billig)&lt;br /&gt;
&lt;br /&gt;
Nicht gelistet werden sollen:&lt;br /&gt;
* hunderte Typen, die alle den gleichen Zweck erfüllen, aber keinen Mehrwert bringen. Stattdessen auf die bekanntesten / preiswertesten beschränken.&lt;br /&gt;
* Details. Stattdessen die Felder &amp;quot;Besonderheiten&amp;quot; und &amp;quot;Anwendungen&amp;quot; benutzen, z.B. &amp;quot;I²C, 12bit&amp;quot; bei Besonderheiten für einen ADC oder &amp;quot;Präzision, Audio&amp;quot; bei Anwendungen für einen OpAmp.&lt;br /&gt;
&lt;br /&gt;
Wer eine Sparte, oder eine Anwendung vermisst, aber selber nichts dazu beitragen kann: Einfach hinzufügen. Wer z.B. einen HF OpAmp sucht und hier nicht fündig wird sollte also eine neue Zeile einfügen und in die Spalte Anwendungen &amp;quot;HF&amp;quot; eintragen. Vielleicht kann ja jemand den Rest der Zeile füllen.&lt;br /&gt;
&lt;br /&gt;
Immer den Grundtypen listen und nicht eine der Varianten, und schon gar nicht alle Varianten einzeln! Also z.B. &amp;quot;LM324&amp;quot; statt &amp;quot;LM324N&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Wenn möglich Direktlinks auf Datenblätter vermeiden und eine Suchmaschine befragen: &amp;quot;http://www.datasheetarchive.com/search.php?q=lm324&amp;quot;&lt;br /&gt;
* so werden alle Varianten gefunden&lt;br /&gt;
* und tote Links vermieden&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten, allgemeinen Standard-Typen ganz oben in der Tabelle listen, danach erst die Spezialtypen für bestimmte Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Und weil es mir so wichtig ist nochmal: Ich rufe geradezu dazu auf, überflüssige, unverfügbare Typen zu löschen!&lt;br /&gt;
&lt;br /&gt;
= Aktive Bauelemente =&lt;br /&gt;
== Analog ==&lt;br /&gt;
&lt;br /&gt;
=== Transistoren ===&lt;br /&gt;
&#039;&#039;Siehe auch:&#039;&#039; &#039;&#039;&#039;[[Transistor-Übersicht#NPN|Transistor-Übersicht]]&#039;&#039;&#039;&lt;br /&gt;
====NPN====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;transistors-npn&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| BC 337&lt;br /&gt;
| 0,04&lt;br /&gt;
| Standardtyp (SMD: BC817) &lt;br /&gt;
| bis ~300mA sinnvoll&lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.google.de/search?num=100&amp;amp;hl=de&amp;amp;q=datasheet+bc337+filetype%3Apdf&amp;amp;btnG=Suche&amp;amp;meta=lr%3Dlang_de%7Clang_en PDF]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| MMBT 2222A&lt;br /&gt;
| 0,05&lt;br /&gt;
| SMD TO-23 Gehäuse, Ptot bis 350mW&lt;br /&gt;
| bis ~ 300mA sinnvoll &lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=1;INDEX=0;FILENAME=A100%252F2N2222ASMD%2523FAI.pdf;SID=29Jo9LE6wQAR0AADnPx904c70c3257c398b8b92e44b2052e44b2f]&lt;br /&gt;
|-&lt;br /&gt;
| BC 547/847&lt;br /&gt;
| 0,03&lt;br /&gt;
| Standardtyp, BC847 in SMD&lt;br /&gt;
| bis ~50mA sinnvoll&lt;br /&gt;
| R,D,I&lt;br /&gt;
| [http://www.semiconductors.philips.com/acrobat_download/datasheets/BC847_BC547_SER_6.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| BC 635/639&lt;br /&gt;
| 0,07&lt;br /&gt;
| andere Pinbelegung als BC547 (= BD135 in anderem Gehäuse)&lt;br /&gt;
| bis ~500mA sinnvoll&lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.semiconductors.philips.com/acrobat/datasheets/BC635_BCP54_BCX54_6.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| BD 433/437&lt;br /&gt;
| 0,19&lt;br /&gt;
| niedrige Sättigungsspannung&lt;br /&gt;
| bis ~2A sinnvoll&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/BD%2FBD435.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TIP41C&lt;br /&gt;
| 0,24&lt;br /&gt;
| Ptot: 65W, geringe Stromverstärkung (max.75)&lt;br /&gt;
| Grenzwert 10A&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetcatalog.org/datasheet/fairchild/TIP41C.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TIP102&lt;br /&gt;
| 0,42&lt;br /&gt;
| Ptot bis 80W mit Kühlkörper, hohe Stromverstärkung von über 1000 über einen sehr großen Bereich.&lt;br /&gt;
| Grenzwert 8A&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/TI%2FTIP102.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TIP 3055&lt;br /&gt;
| 0,75&lt;br /&gt;
| Ptot bis 90W mit Kühlkörper, Stromverstärkung sehr niedrig (bei großen Strömen &amp;lt;&amp;lt; 100)&lt;br /&gt;
| Grenzwert 15A &lt;br /&gt;
| R&lt;br /&gt;
| [http://www.ortodoxism.ro/datasheets/PowerInnovations/mXvutwr.pdf PDF]&lt;br /&gt;
|-====&lt;br /&gt;
| 2N6284&lt;br /&gt;
| 2-3€&lt;br /&gt;
| Linearer NPN-PowerDarlington; Ptot 160W; Antiparalele C-E Diode; komplementärtyp: 2N6287&lt;br /&gt;
| Vcbo 100V; Vceo 100V;Vebo 5V;Ic 20A (peak 40A);Ib 0,5A &lt;br /&gt;
| R&lt;br /&gt;
| [http://www.ortodoxism.ro/datasheets/SGSThomsonMicroelectronics/mXvsruq.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====PNP====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;transistors-pnp&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| BC 327&lt;br /&gt;
| 0,04&lt;br /&gt;
| Komplementärtyp zu BC337&lt;br /&gt;
| bis ~300mA sinnvoll&lt;br /&gt;
| R,D,I&lt;br /&gt;
| [http://www.google.de/search?num=100&amp;amp;hl=de&amp;amp;q=datasheet+bc327+filetype%3Apdf&amp;amp;btnG=Suche&amp;amp;meta=lr%3Dlang_de%7Clang_en PDF]&lt;br /&gt;
|-&lt;br /&gt;
| BC 557&lt;br /&gt;
| 0,03&lt;br /&gt;
| Komplementärtyp zu BC547C&lt;br /&gt;
| bis ~50mA sinnvoll&lt;br /&gt;
| R,D,I&lt;br /&gt;
| [http://www.semiconductors.philips.com/acrobat_download/datasheets/BC556_557_4.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| BC 636/640&lt;br /&gt;
| 0,07&lt;br /&gt;
| Komplementärtyp zu BC635&lt;br /&gt;
| bis ~500mA sinnvoll&lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.semiconductors.philips.com/acrobat/datasheets/BC640_BCP53_BCX53_6.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TIP 2955&lt;br /&gt;
| 0,75&lt;br /&gt;
| Ptot bis 90W mit Kühlkörper&lt;br /&gt;
| Grenzwert 15A&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.ortodoxism.ro/datasheets/motorola/TIP2955.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====N-MOSFET====&lt;br /&gt;
&#039;&#039;Siehe auch:&#039;&#039; &#039;&#039;&#039;[[MOSFET-Übersicht#N-Kanal_MOSFET|MOSFET-Übersicht]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
BUZ10, BUZ11 etc. sind wie alle BUZ Typen ziemlich veraltet. Bitte nicht listen; es gibt fast immer was besseres von IRF.&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;mosfet-n&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| IRF1010N&lt;br /&gt;
| 0,89&lt;br /&gt;
| max 50V, max 85A, 11 mOhm On-Widerstand&lt;br /&gt;
| Alles, was mit POWER zu tun hat ...&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irf1010n.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| IRF1404&lt;br /&gt;
| 1,50&lt;br /&gt;
| max 40V, max 75A, 4 mOhm, 330W&lt;br /&gt;
| sehr geringer Rds, TO-220&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irf1404.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| IRLZ34N&lt;br /&gt;
| 0,43&lt;br /&gt;
| max 55V, max 30A, 35 mOhm On-Widerstand&lt;br /&gt;
| Gatespannung kompatibel mit 5V-Controllern.&lt;br /&gt;
| R, D&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irlz34n.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| IRLML2502&lt;br /&gt;
| 0,42&lt;br /&gt;
| max 20V, max 4,2A (cont.), 45 mOhm On-Widerstand&lt;br /&gt;
| SOT23 SMD-FET, extrem niedrige V_GS_th, bei niedrigem R_DS_on&lt;br /&gt;
| D&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irlml2502.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| BS170&lt;br /&gt;
| 0,10&lt;br /&gt;
| max 60V, bis 500mA, 5 Ohm On-Widerstand&lt;br /&gt;
| veraltete Technik, aber in bastelfreundlichem TO-92 Gehäuse&lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/BS/BS170.pdf PDF] (Fairchild)&lt;br /&gt;
|-&lt;br /&gt;
| BSS123&lt;br /&gt;
| 0,06&lt;br /&gt;
| max 100V, max 170mA (cont.), Thresholdspannung 1,7V, On-Widerstand 1,3Ohm&lt;br /&gt;
| SOT23 SMD-FET, auch für 3V3-versorgte Schaltungen bestens geeignet&lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/BS/BSS123.pdf PDF] (Fairchild)&lt;br /&gt;
|-&lt;br /&gt;
| BUK100-50GL &lt;br /&gt;
| 1,15&lt;br /&gt;
| Logic-Level Power&lt;br /&gt;
| &lt;br /&gt;
| R&lt;br /&gt;
| [http://www.nxp.com/pip/BUK100-50GL_1.html PDF] (NXP)&lt;br /&gt;
|-&lt;br /&gt;
| IRLIZ44N &lt;br /&gt;
| 1,45&lt;br /&gt;
| Logic-Level Power 30A 55V 22mohm&lt;br /&gt;
| TO-220&lt;br /&gt;
| R&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IRLR2905, IRLU2905 &lt;br /&gt;
| 0,60&lt;br /&gt;
| Logic-Level Power 36A 55V RDS=27 mOhm&lt;br /&gt;
| D-Pak &lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| IRLU3410&lt;br /&gt;
| 1,05&lt;br /&gt;
| Logic-Level Power, 100V, 17A, 105mOhm RDS(on), I-PAK&lt;br /&gt;
| &lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/pdf-datasheets/Datasheets-303/37622.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| IRF7301&lt;br /&gt;
| 0,91&lt;br /&gt;
| Dual N-MOSFET mit nur 70mOhm RDS(on) bei 2.7 V, SO-8&lt;br /&gt;
| Laststromschaltung bei kleinen Spannungen, z.B. an Akkus&lt;br /&gt;
| C&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irf7301.pdf PDF] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====P-MOSFET====&lt;br /&gt;
&#039;&#039;Siehe auch:&#039;&#039; &#039;&#039;&#039;[[MOSFET-Übersicht#P-Kanal_MOSFET|MOSFET-Übersicht]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;mosfet-p&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| IRLML6401&lt;br /&gt;
| 0,21&lt;br /&gt;
| max -12V, ca -4,3A (cont.), ca. 0,05 Ohm On-Widerstand&lt;br /&gt;
| SOT-23 SMD FET, extrem niedrige V_GS_th, bei niedrigem R_DS_on&lt;br /&gt;
| D&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irlml6401.pdf]&lt;br /&gt;
|-&lt;br /&gt;
| IRF7220&lt;br /&gt;
| 0,50&lt;br /&gt;
| max -14V, ca -10A (cont.), ca. 0,02 Ohm On-Widerstand&lt;br /&gt;
| Gehäuse SO-8, brauchbar in 3,3V Systemen&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irf7220.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| IRFR5305&lt;br /&gt;
| 0,56&lt;br /&gt;
| max -55V, -31A (cont.), ca. 0,065 Ohm On-Widerstand&lt;br /&gt;
| Gehäuse D-Pak (SMD, TO-252AA), Uth=-2 bis -4V&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irfr5305.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| BS250&lt;br /&gt;
| 0,26&lt;br /&gt;
| max -45V, bis -230mA (cont.), 14 (und mehr) Ohm On-Widerstand&lt;br /&gt;
| veraltete Technik aber in bastelfreundlichem TO-92 Gehäuse von R lieferbar &lt;br /&gt;
| R&lt;br /&gt;
| [http://www.vishay.com/docs/70209/70209.pdf PDF] (Vishay)&lt;br /&gt;
|-&lt;br /&gt;
| NDS0610&lt;br /&gt;
| 0,07&lt;br /&gt;
| max -60V, bis -120mA (cont.), 20 (und mehr) Ohm On-Widerstand&lt;br /&gt;
| SOT-23 SMD Gehäuse Anwendung z.B. als [http://www.mikrocontroller.net/topic/42113#317220 Verpolschutz mit geringem Spannungsabfall]&lt;br /&gt;
| D DK&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/ND%2FNDS0610.pdf PDF] (Fairchild)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====MOSFET-Pärchen====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;mosfet-n-p&amp;quot;&lt;br /&gt;
|-  bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| IRF7389&lt;br /&gt;
| 0,51&lt;br /&gt;
| 30 V, &amp;gt;2,5 A, 30/60 mOhm On-Widerstand&lt;br /&gt;
| Gehäuse SO-8&lt;br /&gt;
| D,R&lt;br /&gt;
| [http://www.irf.com/product-info/datasheets/data/irf7389.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dioden ===&lt;br /&gt;
&#039;&#039;Siehe auch:&#039;&#039; &#039;&#039;&#039;[[Dioden-Übersicht]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;mosfet-p&amp;quot;&lt;br /&gt;
|-  bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| 1N4148&lt;br /&gt;
| 0,02&lt;br /&gt;
| Kleinsignal-Gleichrichterdiode&lt;br /&gt;
| 75V/150mA&lt;br /&gt;
| R,D,I&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/1N%2F1N4148.pdf D]&lt;br /&gt;
|-&lt;br /&gt;
| 1N4001..1N4007&lt;br /&gt;
| 0,02&lt;br /&gt;
| Mehrzweck-Gleichrichterdiode, 1N4001..1N4007 mit gestaffelter Sperrspannung&lt;br /&gt;
| 1A&lt;br /&gt;
| R,D,I&lt;br /&gt;
| [http://www.fairchildsemi.com/ds/1N/1N4001.pdf D]&lt;br /&gt;
|-&lt;br /&gt;
| UF4001..UF4007&lt;br /&gt;
| 0,06 - 0,07&lt;br /&gt;
| UltraFast-Gleichrichterdiode, gestaffelte Sperrspannung, trr&amp;lt;50ns bzw 75ns&lt;br /&gt;
| 1A&lt;br /&gt;
| R, D&lt;br /&gt;
| [http://www.ortodoxism.ro/datasheets/vishay/uf4001.pdf Datenblatt]&lt;br /&gt;
|-&lt;br /&gt;
| 1N5400..1N5408&lt;br /&gt;
| 0,06&lt;br /&gt;
| Mehrzweck-Gleichrichterdiode, 1N5400..1N5408 mit gestaffelter Sperrspannung&lt;br /&gt;
| 3A, 50..1000V&lt;br /&gt;
| R, D&lt;br /&gt;
| [http://www.ortodoxism.ro/datasheets/fairchild/1N5401.pdf D]&lt;br /&gt;
|-&lt;br /&gt;
| UF5404, UF5408&lt;br /&gt;
| 0,11 bzw 0,22&lt;br /&gt;
| UltraFast-Gleichrichterdiode, gestaffelte Sperrspannung, trr&amp;lt;50ns bzw 75ns&lt;br /&gt;
| 3A, 50..1000V&lt;br /&gt;
| R&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| BAT46&lt;br /&gt;
| 0,10&lt;br /&gt;
| Kleinsignal-Schottky-Diode&lt;br /&gt;
| 150mA&lt;br /&gt;
| D,R&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=BAT46 D]&lt;br /&gt;
|-&lt;br /&gt;
| BAT54(A/C/S)&lt;br /&gt;
| 0,072&lt;br /&gt;
| sehr schnelle Kleinsignal-(Doppel-)Schottky-Diode&lt;br /&gt;
| 200mA&lt;br /&gt;
| R,D,I&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=BAT54 D]&lt;br /&gt;
|-&lt;br /&gt;
| SB120-SB160&lt;br /&gt;
| 0,13&lt;br /&gt;
| Schottky-Diode&lt;br /&gt;
| 1A 20-60V&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=SB140 D]&lt;br /&gt;
|-&lt;br /&gt;
| 1N5817-1N5819&lt;br /&gt;
| 0,15&lt;br /&gt;
| Schottky-Diode, sehr ähnlich zu SB120-140&lt;br /&gt;
| 1A 20/30/40V&lt;br /&gt;
| R, D, C&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=1N5819 D]&lt;br /&gt;
|-&lt;br /&gt;
| BA159&lt;br /&gt;
| 0,051&lt;br /&gt;
| Standard-Diode&lt;br /&gt;
| HF 1A 1000V&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=BA159 D]&lt;br /&gt;
|-&lt;br /&gt;
| BAV99&lt;br /&gt;
| 0,041&lt;br /&gt;
| Standard-Doppeldiode, SOT-23&lt;br /&gt;
| ESD-Schutz&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=BAV99 D]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Instrumentenverstärker ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| INA128&lt;br /&gt;
| 6,15 (R)&lt;br /&gt;
| Verstärkung über 1 Widerstand einstellbar&lt;br /&gt;
| Brückenverstärker , Datenerfassung&lt;br /&gt;
| R,F&lt;br /&gt;
| [http://focus.ti.com/lit/ds/symlink/ina128.pdf#search=%22ina128%22 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| INA326&lt;br /&gt;
| ca. 3 (DK)&lt;br /&gt;
| Low Power, läuft an 3.3 oder 5 V&lt;br /&gt;
| Medizintechnik (EKG), Sensoren&lt;br /&gt;
| DK&lt;br /&gt;
| [http://www.ti.com/lit/gpn/ina326 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| AD620&lt;br /&gt;
| ca. 8 (R)&lt;br /&gt;
| Standardtyp&lt;br /&gt;
| EKG, EEG, Brückenverstärker&lt;br /&gt;
| R, RS, DK&lt;br /&gt;
| [http://www.analog.com/UploadedFiles/Data_Sheets/37793330023930AD620_e.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Operationsverstärker ===&lt;br /&gt;
Es sind die &#039;&#039;typical values&#039;&#039; bei &#039;&#039;25°C&#039;&#039; angegeben. Falls es selektierte Versionen gibt (z.B. LM358&#039;&#039;&#039;A&#039;&#039;&#039;) ist der schlechtere Wert des Standardteils angegeben.&lt;br /&gt;
&lt;br /&gt;
Bei den R2R Werten immer die Last in Ohm mitangeben, ansonsten sind die Werte relativ sinnlos.&lt;br /&gt;
Vcc ist Versorgungs-Plus. Vee ist Versorgungs-Minus.&lt;br /&gt;
&lt;br /&gt;
Bei der Stromaufnahme (supply current) ist der Strom pro IC angegeben. In den Datenblättern oft pro OPV, weil das nach weniger aussieht.&lt;br /&gt;
&lt;br /&gt;
Der Preis ist für Einzelstücke angegeben und entspricht bei den meisten dem bei Reichelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Siehe auch:&#039;&#039; [http://www.rn-wissen.de/index.php/Operationsverst%C3%A4rker#Liste_g.C3.A4ngiger_Typen_von_Operationsverst.C3.A4rkern RN - Liste gängiger Typen von Operationsverstärkern]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Die Tabelle lässt sich mit einem Klick auf die Überschriften &#039;&#039;&#039;sortieren&#039;&#039;&#039;.&amp;lt;/center&amp;gt;&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! OPVs&lt;br /&gt;
! Unity- Gain in&amp;amp;nbsp;MHz&lt;br /&gt;
! Slew-Rate in V/µs&lt;br /&gt;
! &amp;lt;small&amp;gt;Input Offset Spannung in mV&amp;lt;/small&amp;gt;&lt;br /&gt;
! Input Offset  Strom&lt;br /&gt;
! Input Bias Strom&lt;br /&gt;
! R2R in&lt;br /&gt;
! R2R out&lt;br /&gt;
! Strom- aufnahme in mA&lt;br /&gt;
! Bemerkung&lt;br /&gt;
! Daten- blatt&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
|-&lt;br /&gt;
| LM358&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0,5&lt;br /&gt;
| 3&lt;br /&gt;
| 5 nA&lt;br /&gt;
| 45 nA&lt;br /&gt;
| Vcc-2V Vee-0,1V&lt;br /&gt;
| Vcc-1,5V Vee+5mV @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 5V&lt;br /&gt;
| 0,8&lt;br /&gt;
| Standard-OP, Vcc=3V-30V, I&amp;lt;sub&amp;gt;sink&amp;lt;/sub&amp;gt;=15mA I&amp;lt;sub&amp;gt;source&amp;lt;/sub&amp;gt;=30mA I&amp;lt;sub&amp;gt;sink-max&amp;lt;/sub&amp;gt;=40mA&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=lm358 PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,09&lt;br /&gt;
|-&lt;br /&gt;
| LM324&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
| 0,5&lt;br /&gt;
| 3&lt;br /&gt;
| 5 nA&lt;br /&gt;
| 45 nA&lt;br /&gt;
| Vcc-2V Vee-0,1V&lt;br /&gt;
| Vcc-1,5V Vee+5mV @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 5V&lt;br /&gt;
| 1&lt;br /&gt;
| Standard-OP, wie LM358&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=lm324 PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,13&lt;br /&gt;
|-&lt;br /&gt;
| NE5532&lt;br /&gt;
| 2&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 0,5&lt;br /&gt;
| 10 nA&lt;br /&gt;
| 500 nA&lt;br /&gt;
| &lt;br /&gt;
| Vcc-2V Vee+2V @600&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 30V&lt;br /&gt;
| 8&lt;br /&gt;
| Standard Audio OP, treibt 600ohm, Iout=35mA&lt;br /&gt;
| [http://focus.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=ne5532&amp;amp;fileType=pdf PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,23&lt;br /&gt;
|-&lt;br /&gt;
| TL072&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| 13&lt;br /&gt;
| 3&lt;br /&gt;
| 5 pA&lt;br /&gt;
| 65 pA&lt;br /&gt;
| Vcc-0V Vee+3V&lt;br /&gt;
| Vcc-1,5V Vee+1,5V @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 30V&lt;br /&gt;
| 2,8&lt;br /&gt;
| Standard Audio, Low Noise/JFET Eingang, Quad-Version: TL074, single: TL071(mit Offsetkorr.)&lt;br /&gt;
| [http://focus.ti.com/lit/ds/symlink/tl072.pdf PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,17&lt;br /&gt;
|-&lt;br /&gt;
| TL062&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 65 pA&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0,4&lt;br /&gt;
| Low Power/JFET Eingang, veraltet&lt;br /&gt;
| [http://focus.ti.com/lit/ds/symlink/tl062.pdf PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,17&lt;br /&gt;
|-&lt;br /&gt;
| TS912&lt;br /&gt;
| 2&lt;br /&gt;
| 1 @5V&lt;br /&gt;
| 0,8 @5V&lt;br /&gt;
| 10&lt;br /&gt;
| 1 pA&lt;br /&gt;
| 1 pA&lt;br /&gt;
| Vcc+0,2V Vee-0,2V over the rail&lt;br /&gt;
| Vcc-0,05V Vee+0,04V @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 5V&lt;br /&gt;
| 0,4&lt;br /&gt;
| Standard Rail2Rail Typ, Vcc=2,7-16V, Iout=65mA&lt;br /&gt;
| [http://www.st.com/stonline/products/literature/ds/2325/ts912.pdf PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,80&lt;br /&gt;
|-&lt;br /&gt;
| LMC6484&lt;br /&gt;
| 4&lt;br /&gt;
| 1,5&lt;br /&gt;
| 0,9&lt;br /&gt;
| 3&lt;br /&gt;
| 2 pA&lt;br /&gt;
| 4 pA&lt;br /&gt;
| Vcc+0,2V Vee-0,2V over the rail&lt;br /&gt;
| Vcc-0,2V Vee+0,2V @2k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 5V&lt;br /&gt;
| 3&lt;br /&gt;
| Iout=16mA@5V Iout=28mA@15V&lt;br /&gt;
| [http://www.national.com/ds.cgi/LM/LMC6484.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 2,35&lt;br /&gt;
|-&lt;br /&gt;
| OPA2340&lt;br /&gt;
| 2&lt;br /&gt;
| 5,5&lt;br /&gt;
| 6&lt;br /&gt;
| 0,150&lt;br /&gt;
| 1 pA&lt;br /&gt;
| 1 pA&lt;br /&gt;
| Vcc+0,5V Vee-0,5V over the rail&lt;br /&gt;
| Vcc-0,04V Vee+0,04V @2k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt;&lt;br /&gt;
| 1,5&lt;br /&gt;
| CMOS Vcc=2,5V - 5,5V&lt;br /&gt;
| [http://focus.ti.com/lit/ds/symlink/opa4340.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 1,80&lt;br /&gt;
|-&lt;br /&gt;
| LF356&lt;br /&gt;
| 1&lt;br /&gt;
| 5&lt;br /&gt;
| 12&lt;br /&gt;
| 3&lt;br /&gt;
| 3 pA&lt;br /&gt;
| 30 pA&lt;br /&gt;
| Vcc&#039;&#039;&#039;+&#039;&#039;&#039;0,1V Vee+3V &lt;br /&gt;
| Vcc-2V Vee+2V  @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 30V&lt;br /&gt;
| 5&lt;br /&gt;
| high bandwidth J-FET, Settling-Time = 1,5µs @0.01% error-voltage, Eingang knapp über Vcc, &lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A200%252FLF355_LF356_LF357%2523STM.pdf; PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,50&lt;br /&gt;
|-&lt;br /&gt;
| OP07&lt;br /&gt;
| 1&lt;br /&gt;
| 0,6&lt;br /&gt;
| 0,3&lt;br /&gt;
| 0,030&lt;br /&gt;
| 0,4 nA&lt;br /&gt;
| 1 nA&lt;br /&gt;
| Vcc-1,5V Vee+1,5V&lt;br /&gt;
| Vcc-2,2V Vee+2,2V @2k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 15V&lt;br /&gt;
| 0,7 - 2,5&lt;br /&gt;
| geringer Offset &amp;lt;80µV je nach Hersteller&lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=1;INDEX=0;FILENAME=A200%252FOP07%2523AD.pdf; PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,25&lt;br /&gt;
|-&lt;br /&gt;
| LMC6062&lt;br /&gt;
| 2&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0,015&lt;br /&gt;
| 0,1&lt;br /&gt;
| 0,01 pA max:2pA&lt;br /&gt;
| 0,01 pA max:4pA&lt;br /&gt;
| &lt;br /&gt;
| Vcc-0,05V Vee+0,05V @25k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 5V&lt;br /&gt;
| 0,045&lt;br /&gt;
| Precision, Micropower, CMOS, Is~40µA (typ.), Iout=8mA&lt;br /&gt;
| [http://www.national.com/ds.cgi/LM/LMC6062.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 2,05&lt;br /&gt;
|-&lt;br /&gt;
| LM4250&lt;br /&gt;
| 1&lt;br /&gt;
| 0,3 - 0,01&lt;br /&gt;
| 1 - 0,001&lt;br /&gt;
| 3 - 5&lt;br /&gt;
| 3 nA-10 nA&lt;br /&gt;
| 8 nA-50 nA&lt;br /&gt;
| Vcc-0,6V Vee+0,6V&lt;br /&gt;
| Vcc-0,6V Vee+0,6V @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 3V&lt;br /&gt;
| 0,008 - 0,09&lt;br /&gt;
| Micropower, &amp;quot;programmierbar&amp;quot;, Werte jeweils für Is=8µA und 90µA&lt;br /&gt;
| [http://www.national.com/ds.cgi/LM/LM4250.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,98&lt;br /&gt;
|-&lt;br /&gt;
| ICL7621&lt;br /&gt;
| 2&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0,15&lt;br /&gt;
| 15&lt;br /&gt;
| 30 pA&lt;br /&gt;
| 1 pA&lt;br /&gt;
| Vcc-0,3V Vee+0,3V unklar &amp;lt;!-- Das Datenblatt sagt folgendes. Bedeutet dies R2R input?    Differential Input Voltage [(V+ +0.3) - (V- -0.3)]V --&amp;gt;&lt;br /&gt;
| Vcc-0,1V Vee+0,1V @100k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt;&lt;br /&gt;
| 0,2&lt;br /&gt;
| Micropower CMOS Vcc=2V - 16V &lt;br /&gt;
| [http://datasheets.maxim-ic.com/en/ds/ICL7611-ICL764X.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 1,10&lt;br /&gt;
|-&lt;br /&gt;
| ICL7611 / ICL7612&lt;br /&gt;
| 1&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0,15&lt;br /&gt;
| 15&lt;br /&gt;
| 30 pA&lt;br /&gt;
| 1 pA&lt;br /&gt;
| Vcc-0,3V Vee+0,3V unklar &amp;lt;!-- Das Datenblatt sagt folgendes. Bedeutet dies R2R input?    Differential Input Voltage [(V+ +0.3) - (V- -0.3)]V --&amp;gt;&lt;br /&gt;
| Vcc-0,1V Vee+0,1V @100k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt;&lt;br /&gt;
| 0,010 - 1 &lt;br /&gt;
| gleich mit ICL7621, aber nur 1 OPV und dafür programmierbar: Is= 10µA, 100µA, 1mA&lt;br /&gt;
| [http://datasheets.maxim-ic.com/en/ds/ICL7611-ICL764X.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,82&lt;br /&gt;
|-&lt;br /&gt;
| LM 13700&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
| 50&lt;br /&gt;
| 0,5&lt;br /&gt;
| 0,1 µA&lt;br /&gt;
| 0,4 µA&lt;br /&gt;
| &lt;br /&gt;
| Vcc-0,8V Vee+0,6V&lt;br /&gt;
| 2,6&lt;br /&gt;
| OTA - Steilheits-OP 50V/µs&lt;br /&gt;
| [http://www.national.com/ds.cgi/LM/LM13700.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,90&lt;br /&gt;
|-&lt;br /&gt;
| CA 3140&lt;br /&gt;
| 1&lt;br /&gt;
| 4,5&lt;br /&gt;
| 9&lt;br /&gt;
| 5&lt;br /&gt;
| 0,5 pA&lt;br /&gt;
| 10 pA&lt;br /&gt;
| Vee-0,5V&lt;br /&gt;
| Vcc-2V Vee+0,6V  @2k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 15V&lt;br /&gt;
| 4&lt;br /&gt;
| BIMOS-OP - kleiner Eingangsstrom, ideal für Single-Supply, Vcc-min=4V&lt;br /&gt;
| [http://www.intersil.com/data/fn/fn957.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,47&lt;br /&gt;
|-&lt;br /&gt;
| TCA0372&lt;br /&gt;
| 2&lt;br /&gt;
| 1,1&lt;br /&gt;
| 1,3&lt;br /&gt;
| 1&lt;br /&gt;
| 10 nA&lt;br /&gt;
| 100 nA&lt;br /&gt;
| Vee to Vcc-1,0V&lt;br /&gt;
| Vcc-0,8V Vee+0,8V @0,1A 30V  Vcc-1,3V Vee+1,3V  @1A 24V &lt;br /&gt;
| 5&lt;br /&gt;
| Power-OPV, Thermal Shutdown, Io=1A Io(max)=1.5A&lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A200%252FTCA0372%2523MOT.pdf; PDF]&lt;br /&gt;
| alle, R&lt;br /&gt;
| 0,70&lt;br /&gt;
|-&lt;br /&gt;
| LA6510&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| 0,15&lt;br /&gt;
| 2&lt;br /&gt;
| 10 nA&lt;br /&gt;
| 100 nA&lt;br /&gt;
| Vcc-2V Vee+0V&lt;br /&gt;
| Vcc-2V Vee+2V  @33&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt; 30V&lt;br /&gt;
| 12&lt;br /&gt;
| Power-OPV, current limiter pin, Imax=1A P=2,5W, Gehäuse:SIP10F&lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A200%252FLA6510%2523SAN.pdf; PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,80&lt;br /&gt;
|-&lt;br /&gt;
| L272&lt;br /&gt;
| 2&lt;br /&gt;
| 0,35&lt;br /&gt;
| 1&lt;br /&gt;
| 15&lt;br /&gt;
| 50 nA&lt;br /&gt;
| 300 nA&lt;br /&gt;
| &lt;br /&gt;
| Vcc-1V Vee+0,3V @0,1A 24V  Vcc-1,5V Vee+0,6V  @0,5A 24V &lt;br /&gt;
| 8&lt;br /&gt;
| Power-OPV, Vcc=4V-28V, Io=0,7A P=1W, Thermal Shutdown @160°C&lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A200%252FL272fai.pdf; PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,70&lt;br /&gt;
|-&lt;br /&gt;
| TLC272&lt;br /&gt;
| 2&lt;br /&gt;
| 1.7&lt;br /&gt;
| 2.9&lt;br /&gt;
| 1.1&lt;br /&gt;
| 0.1 pA&lt;br /&gt;
| 0.7 pA&lt;br /&gt;
| Vcc-0.8V Vee-0.3V&lt;br /&gt;
| Vcc-1.2V Vee+0V  @10k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt;&lt;br /&gt;
| 5&lt;br /&gt;
| Precion OPV, für hochohmige Messanwendungen, Single: TLC271, Quad: TLC274, weniger Offset: TLC277&lt;br /&gt;
| [http://www.datasheetcatalog.com/datasheets_pdf/T/L/C/2/TLC272.shtml; PDF]&lt;br /&gt;
| R, CSD&lt;br /&gt;
| 0,26&lt;br /&gt;
|-&lt;br /&gt;
| MCP602-I/P&lt;br /&gt;
| 2&lt;br /&gt;
| 2,8&lt;br /&gt;
| 2,3&lt;br /&gt;
| 1&lt;br /&gt;
| 1 pA&lt;br /&gt;
| 1 pA&lt;br /&gt;
| Vcc-1,2V Vee-0,2V&lt;br /&gt;
| Vcc-0,1V Vee+0,1V  @5k&amp;lt;math&amp;gt;\mathrm{\Omega}&amp;lt;/math&amp;gt;&lt;br /&gt;
| 0,5&lt;br /&gt;
| Vcc=2,7V-5,5V Vout=20mA&lt;br /&gt;
| [http://www.chipcatalog.com/Doc/88306CED2FD891755A0736169A8D31C1.pdf PDF]&lt;br /&gt;
| R&lt;br /&gt;
| 0,55&lt;br /&gt;
|-&lt;br /&gt;
| LM393&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 5 nA&lt;br /&gt;
| 65 nA&lt;br /&gt;
| Vcc-2V Vee+0V&lt;br /&gt;
| Open- Collector&lt;br /&gt;
| 1,6&lt;br /&gt;
| Standard-Komparator, Isink=16mA, Vcc=2V - 36V, Response-Time=1,5µs&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=lm393 PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,10&lt;br /&gt;
|-&lt;br /&gt;
| LM339&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1,4&lt;br /&gt;
| 2,3 nA&lt;br /&gt;
| 60 nA&lt;br /&gt;
| &lt;br /&gt;
| Open- Collector&lt;br /&gt;
| 1,1&lt;br /&gt;
| Standard-Komparator, Isink=16mA, Vcc=2V - 36V, Response-Time=1,5µs&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=lm339 PDF]&lt;br /&gt;
| alle&lt;br /&gt;
| 0,10&lt;br /&gt;
|-&lt;br /&gt;
| TLC3702&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0,02&lt;br /&gt;
| Micropower-Komparator (20µA) PushPull Ausgang&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=tlc3702 PDF]&lt;br /&gt;
| F&lt;br /&gt;
| 0,80&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| Bezeichnung&lt;br /&gt;
| OPVs pro Gehäuse&lt;br /&gt;
| Unity-Gain&lt;br /&gt;
| Slew-Rate&lt;br /&gt;
| Input Offset Spannung&lt;br /&gt;
| Input Offset Strom&lt;br /&gt;
| Input Bias Strom&lt;br /&gt;
| R2R in&lt;br /&gt;
| R2R out&lt;br /&gt;
| Stromaufnahme&lt;br /&gt;
| Bemerkung&lt;br /&gt;
| [http://www. PDF]&lt;br /&gt;
| Lieferant&lt;br /&gt;
| Preis&lt;br /&gt;
|-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Warum findet sich in obiger Liste kein 741, war er doch lange Zeit &amp;quot;der&amp;quot; OPV schlechthin? Nun, er wird allgemein als &amp;quot;veraltet&amp;quot; angesehen, da er aus den 60er Jahren stammt (1968 von Fairchild vorgestellt, etwa ab 1969 kommerziell erhältlich) und keine besonderen technischen Daten aufweist. Der immerhin etwa fünf Jahre jüngere 324 (von 1974) kostet häufig ein paar Cent weniger, enthält dafür aber vier statt einen OPV mit besseren Daten.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsregler ===&lt;br /&gt;
==== Linearregler ====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;linearregler&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| LP2950&lt;br /&gt;
| 0,39 - 0,53&lt;br /&gt;
| Festspannungsregler Low-Dropout&lt;br /&gt;
| 3 - 5V 100mA, TO-92, &amp;lt;120µA Ruhestrom&lt;br /&gt;
| R, D&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LP2950 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM2940&lt;br /&gt;
| 0,40&lt;br /&gt;
| Festspannungsregler Low-Dropout&lt;br /&gt;
| z.B. 5V, 1A(@0,5V drop), Verpolschutz, TO-220, SOT-223, automotive&lt;br /&gt;
| R, D&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LM2940 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM317&lt;br /&gt;
| 0,22&lt;br /&gt;
| Linearer einstellbarer Spannungsregler&lt;br /&gt;
| max 40V -&amp;gt; 1,2 - 37V, max 1.5A, TO220&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LM317 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| MAX663&lt;br /&gt;
| 1,80&lt;br /&gt;
| Linearer, einstellbarer Spannungsregler&lt;br /&gt;
| sehr niedriger Eigenstromverbrauch&lt;br /&gt;
| R&lt;br /&gt;
| [http://datasheets.maxim-ic.com/en/ds/MAX663-MAX666.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM78xx&lt;br /&gt;
| &amp;lt;1,00&lt;br /&gt;
| Festspannungregler (xx=05: 5V, xx=12: 12V ...)&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| alle&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| LM79xx&lt;br /&gt;
| &amp;lt;1,00&lt;br /&gt;
| Festspannungregler, negative Spannung (xx=05: -5V, xx=12: -12V ...)&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| alle&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| LF33&lt;br /&gt;
| &amp;lt;1,00&lt;br /&gt;
| Festspannungregler &lt;br /&gt;
| +3,3V, TO-220, 1A&lt;br /&gt;
| R, I&lt;br /&gt;
| [http://www.datasheetcatalog.org/datasheet/stmicroelectronics/2574.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM 2931&lt;br /&gt;
| ~0,30 - 0,40&lt;br /&gt;
| feste und variable Low-Dropout Spannungsregler (max. 100mA)&lt;br /&gt;
| TO-220, TO-92, SMD, Automotive, Iq=0,4mA&lt;br /&gt;
| R&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [http://www.national.com/an/AN/AN-1148.pdf AN-1148: Application Note 1148 Linear Regulators: Theory of Operation and Compensation] von National Semiconductor Corporation (PDF)&lt;br /&gt;
&lt;br /&gt;
==== Schaltregler ====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;schaltregler&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| LM2576 ADJ&lt;br /&gt;
| 0,90&lt;br /&gt;
| Step-Down&lt;br /&gt;
| max 40V -&amp;gt; 1,2 - 37V, max 3A, TO220-5&lt;br /&gt;
| alle - Achtung: R liefert u.U. den nur zum LM2596 äquivalenten P3596&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LM2576 PDF] - [http://www.mikrocontroller.net/topic/58094#450561 mit Funk-Entstördrossel FED100µ (Reichelt...) bis 3 A]&lt;br /&gt;
|-&lt;br /&gt;
| [[MC34063]]A&lt;br /&gt;
| 0,25&lt;br /&gt;
| Step-Up ~0,3A / Step-Down 0,7A / Inverter 0,2A-0,6A&lt;br /&gt;
| SO-8/DIP-8; Tool zum Berechnen auf [http://www.nomad.ee/micros/mc34063a/index.shtml www.nomad.ee]&lt;br /&gt;
| R, I&lt;br /&gt;
| [http://www.onsemi.com/pub/Collateral/MC34063A-D.PDF PDF], [http://www.mikrocontroller.net/articles/MC34063]&lt;br /&gt;
|-&lt;br /&gt;
| PR4401&lt;br /&gt;
| 0,50&lt;br /&gt;
| Led-Treiber, Step-Up, Batteriebetrieb mit einer Zelle (bis 0,9 V)&lt;br /&gt;
| SO-23&lt;br /&gt;
| R, [http://www.ak-modul-bus.de/ AK Modul-Bus]&lt;br /&gt;
| [http://www.prema.com/pdf/pr4401.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LT1930 und LT1932&lt;br /&gt;
| ~3 €&lt;br /&gt;
| Leistungs-Led-Treiber, Step-Up&lt;br /&gt;
| SO-23&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.linear.com/pc/productDetail.jsp?navId=H0,C1,C1003,C1042,C1031,C1061,P1813]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Shuntregler/[[Spannungsreferenz]] ====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;schaltregler&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Spannung&lt;br /&gt;
! Strom&lt;br /&gt;
! Fehler&lt;br /&gt;
! Temp-Drift&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| TL431&lt;br /&gt;
| 0,15&lt;br /&gt;
| 2,5V&lt;br /&gt;
| 1mA - 100mA&lt;br /&gt;
| &amp;lt;2%&lt;br /&gt;
| 30 ppm/°C&lt;br /&gt;
| Präzise Alternative zur Z-Diode, Spannungsbegrenzung,&lt;br /&gt;
| C, R, DK&lt;br /&gt;
|[http://www.datasheetarchive.com/search.php?q=TL431 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LT1021&lt;br /&gt;
| 5,00&lt;br /&gt;
| 5V; 7V; 10V&lt;br /&gt;
| +-10mA &lt;br /&gt;
| &amp;lt;1%; &amp;lt;0,05%&lt;br /&gt;
| 3ppm/°C&lt;br /&gt;
| Präzisions-Referenz, output sources and sinks 10mA, Is=1mA,&lt;br /&gt;
| C, R, DK&lt;br /&gt;
|[http://www.datasheetarchive.com/search.php?q=LT1021 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LT1004 &lt;br /&gt;
| 1,90&lt;br /&gt;
| 1,23V; 2.5 V &lt;br /&gt;
| 10µA - 20mA &lt;br /&gt;
| 0,5%; 1%&lt;br /&gt;
| 50ppm/°C&lt;br /&gt;
| Low power Referenz, ab 10 µA&lt;br /&gt;
| R&lt;br /&gt;
|[http://www.datasheetarchive.com/search.php?q=LT1004 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM336&lt;br /&gt;
| 0,30&lt;br /&gt;
| 2,5&lt;br /&gt;
| 0,4mA - 10mA&lt;br /&gt;
| &amp;lt;4%&lt;br /&gt;
| &lt;br /&gt;
| Präzise Alternative zur Z-Diode, &lt;br /&gt;
| C, R, DK&lt;br /&gt;
|[http://www.datasheetarchive.com/search.php?q=LM336 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM385&lt;br /&gt;
| 0,35&lt;br /&gt;
| 1,2V; 2,5V&lt;br /&gt;
| 0,015mA - 20mA&lt;br /&gt;
| &amp;lt;2%&lt;br /&gt;
| ±20ppm/°C&lt;br /&gt;
| Präzise Alternative zur Z-Diode&lt;br /&gt;
| C, R, DK&lt;br /&gt;
|[http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A200%252FLM385Z1%252C2%2523TEX.pdf; PDF]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| IC gesucht&lt;br /&gt;
| -&amp;lt; 1 Euro&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt; 0.1 mA &lt;br /&gt;
| &amp;lt;0,5%&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timer ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;can&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| 555&lt;br /&gt;
| 0,15&lt;br /&gt;
| Universeller Zeitgeber.&lt;br /&gt;
| Für alles, wirklich alles. CMOS-Versionen lassen sich aufgrund ihrere niedrigeren Betriebsspannung besser mit µCs verbinden.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=555+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| DS1307&lt;br /&gt;
| 1,95&lt;br /&gt;
| 64 X 8 Serial Real Time Clock. Quarzuhr / Kalender Baustein mit serieller TWI-Schnittstelle.  &lt;br /&gt;
| Uhrenfunktion, unabhängig vom µC, aber µC-Steuerbar. Batteriepufferbar (3V-Knopfzelle wie CR2032) um die Zeit bei ausgeschalteter Board-Betriebsspannung weiter zu zählen.&lt;br /&gt;
| D, R, I&lt;br /&gt;
| [http://www.google.de/search?q=DS1307 Google]&lt;br /&gt;
|-&lt;br /&gt;
| PCF8583&lt;br /&gt;
| 1,50&lt;br /&gt;
| I²C/TWI Real Time Clock, Calendar, SRAM, Alarm, Timer, Eventcounter&lt;br /&gt;
| Auf Basis eines SRAM-chips, deshalb kann ein großer Teil als SRAM genutzt werden (ca 240 bytes). Berechnet Datum (4 jahre, jahr0 = schaltjahr), Uhrzeit (12/24), Wochentag. ein 32khz-Uhrenquarz ist nötig, sonst als Uhr unbrauchbar da  störempfindlich. Möglichkeit eines Interruptausganges bei voreingestellter Alarmzeit. Bemerkenswert einfaches Protokoll. Kann umgeschaltet werden in einen Timer-Modus (einfacher Counter mit bestimmter Timebase) oder Event-Counter-Modus (Eingangssignale zählen).&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.alldatasheet.com/view.jsp?Searchword=PCF8583]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Analogschalter und Multiplexer ===&lt;br /&gt;
Die DG2xx DG3xx DG4xx, teilweise auch DG5xx bezeichnen Analogschalter und Multiplexer die sich zum Industriestandard entwickelt haben. Es gibt sie von vielen Herstellern und zahlreichen Ausführungen in allen R(on) Bereichen und sind Pinkompatibel. Anstelle von &amp;quot;DGxxx&amp;quot; benutzen Hersteller für verbesserte/moderne Versionen ihre eigenen Präfixe wie &amp;quot;ADGxxx&amp;quot; von Analog Devices oder &amp;quot;MAXxxx&amp;quot; von Maxim. Für einfache Schalter werden häufig die letzten zwei Ziffern 01 bis 05 und 11-13 benutzt, 06/07/08/09 bezeichnet 16:1 8:1 und 4:1 Multiplexer in Single Ended und Differential Ended. Spannungsbereich geht bis +/-12 oder +/-15 V, die Steuereingänge haben zum Teil TTL-Kompatibilität, andernfalls einen Pin der den Logikpegel definiert (z.B. VCC).&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;can&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| DG201/DG202/DG212&lt;br /&gt;
| ~2-3€&lt;br /&gt;
| Vierfach Einzelschalter in SPST, SPDT, &lt;br /&gt;
| Zum µC-gesteuerten schalten von Analogsignalen, in Audio, Video, und Messschaltungen, in OP-Schaltungen für programmierbare Verstärkungen&lt;br /&gt;
| Maxim, Analog Devices, u.a.&lt;br /&gt;
| [http://search.datasheetcatalog.net/cgi-bin/helo.pl?text=DG202&amp;amp;action=Search]&lt;br /&gt;
|-&lt;br /&gt;
| DG306/DG406&lt;br /&gt;
| ~4-10€&lt;br /&gt;
| 16:1 Analog-Multiplexer&lt;br /&gt;
| Zum Multiplexen von Analogsignalen, Kanalauswahl für ADC-Messschaltungen.&lt;br /&gt;
| Maxim, Analog Devices, u.a.&lt;br /&gt;
| [http://search.datasheetcatalog.net/cgi-bin/helo.pl?text=DG306&amp;amp;action=Search]&lt;br /&gt;
|-&lt;br /&gt;
| DG307/DG408&lt;br /&gt;
| ~4-10€&lt;br /&gt;
| Zweifach 8:1 bzw Einfach 8:1 differential ended (8 Doppelkanäle)&lt;br /&gt;
| Zum Multiplexen von Analogsignalen, Kanalauswahl für ADC-Messschaltungen auch für differentielle Eingänge. &lt;br /&gt;
| Maxim, Analog Devices, u.a.&lt;br /&gt;
| [http://search.datasheetcatalog.net/cgi-bin/helo.pl?text=DG308&amp;amp;action=Search]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 4051, z.B. 74HC4051&lt;br /&gt;
| ab 25ct&lt;br /&gt;
| 1:8 Multiplexer, R_on &amp;lt;100Ohm, auch 2:4, 1:16 usw  &lt;br /&gt;
| Zum µC-gesteuerten schalten von Analogsignalen, in Audio, Video, und Messschaltungen, in OP-Schaltungen für programmierbare Verstärkungen&lt;br /&gt;
| verschiedende&lt;br /&gt;
| [http://search.datasheetcatalog.net/cgi-bin/helo.pl?text=74HC4051&amp;amp;action=Search]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Digital ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;can&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| MCP2515&lt;br /&gt;
| 2,55&lt;br /&gt;
| SPI-CAN 2.0B Baustein&lt;br /&gt;
| &lt;br /&gt;
| D,F,R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q= PDF]&lt;br /&gt;
|-&lt;br /&gt;
| SJA1000&lt;br /&gt;
| 4,55&lt;br /&gt;
| PellCAN 2.0B 1Mbit/s&lt;br /&gt;
|&lt;br /&gt;
| F,R&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Logik ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (€)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| 74HC4050&lt;br /&gt;
| 0,27&lt;br /&gt;
| z.B. 5V =&amp;gt; 3V&lt;br /&gt;
| Pegelwandler unidirektional abwärts&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=74hc4050 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| HEF4104B&lt;br /&gt;
| 0,77&lt;br /&gt;
| z.B. 5V =&amp;gt; 12V&lt;br /&gt;
| Pegelwandler unidirektional aufwärts&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=HEF4104B PDF]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;usb&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| FT232&lt;br /&gt;
| 3,59&lt;br /&gt;
| USB &amp;lt;-&amp;gt; RS232 Wandler&lt;br /&gt;
| Zugriff über virtuellen COM Port&lt;br /&gt;
| D, R, I&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=ft232 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| FT245&lt;br /&gt;
| 4,79&lt;br /&gt;
| USB &amp;lt;-&amp;gt; Seriell Wandler mit paralleler Schnittstelle&lt;br /&gt;
| Zugriff über virtuellen COM Port&lt;br /&gt;
| D, R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=ft245 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TUSB3410&lt;br /&gt;
| 3,50&lt;br /&gt;
| USB &amp;lt;-&amp;gt; RS232 mit 8052 CPU&lt;br /&gt;
| Zugriff über virtuellen COM Port&lt;br /&gt;
| DK&lt;br /&gt;
| [http://focus.ti.com/docs/prod/folders/print/tusb3410.html PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Treiber ===&lt;br /&gt;
==== Diverse Treiber ====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| ULN2003A&lt;br /&gt;
| 0,15&lt;br /&gt;
| 7-fach Low-Side Treiber&lt;br /&gt;
| 50V/500mA&lt;br /&gt;
| R, D, I&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=ULN2003 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| ULN2803A&lt;br /&gt;
| 0,30&lt;br /&gt;
| 8-fach Low-Side Treiber&lt;br /&gt;
| 50V/500mA&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=ULN2803 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TPIC6B595&lt;br /&gt;
| 1,00&lt;br /&gt;
| 8-fach Low-Side Treiber mit integriertem Schieberegister&lt;br /&gt;
| 45V/250mA&lt;br /&gt;
| F&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=TPIC6B595 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| UDN2981&lt;br /&gt;
| 1,50&lt;br /&gt;
| 8-fach High-Side Treiber&lt;br /&gt;
| 50V/500mA&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=UDN2981 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| ICL7667&lt;br /&gt;
| 1&lt;br /&gt;
| Dual inverting MOSFET Treiber&lt;br /&gt;
| 18V, 20ns@1nF&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=ICL7667 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| HCPL3120&lt;br /&gt;
| 3.70&lt;br /&gt;
| Optokoppler mit integriertem MOSFET-Treiber&lt;br /&gt;
| Schaltnetzteile, etc.&lt;br /&gt;
| C&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=HCPL3120 PDF]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| SN75179B&lt;br /&gt;
| 0.36&lt;br /&gt;
| RS-485/422 Receiver/Transmitter, alter IC mit hohem Stromverbrauch (60mA!)&lt;br /&gt;
| Serielle Daten (z.B.UART) über weite Strecken&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=SN75174 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| MAX485&lt;br /&gt;
| 1.60&lt;br /&gt;
| RS-485/422 Receiver/Transmitter, moderner CMOS IC mit geringem Stromverbrauch (0,3mA!)&lt;br /&gt;
| Serielle Daten (z.B.UART) über weite Strecken&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=MAX485 PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 7-Segment LED-Treiber ====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;led&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| SAA1064&lt;br /&gt;
| ~2€&lt;br /&gt;
| Vier-Stellen Treiber mit [[I2C|I²C]] ([[TWI]]) Bus&lt;br /&gt;
| Treibt bis zu vier 7-Segment (plus Dezimalpunkt) Stellen mit gemeinsamer Anode. Bis zu vier SAA1064 können an einem I²C-Bus betrieben werden. Damit kann man insgesamt 16 Stellen treiben.&lt;br /&gt;
| Reichelt&lt;br /&gt;
| [http://www.nxp.com/pip/SAA1064_CNV_2.html NXP]&lt;br /&gt;
|-&lt;br /&gt;
| STLED316S, STLED316SMTR&lt;br /&gt;
| ~2€&lt;br /&gt;
| Sechs-Stellen Treiber mit [[SPI]]-ähnlicher Busschnittstelle&lt;br /&gt;
| Sechs-Stellen Treiber, der zusätzlich noch ein 8x2 Tastaturdekoder enthält. Die Busschnittstelle ist [[SPI]]-ähnlich, MOSI und MISO liegen auf einem gemeinsamen PIN als DIN/DOUT.&lt;br /&gt;
| Mouser&lt;br /&gt;
| [http://www.st.com/stonline/products/literature/ds/14307/stled316s.pdf ST]&lt;br /&gt;
|-&lt;br /&gt;
| ICM7218C&lt;br /&gt;
| ~6€&lt;br /&gt;
| Acht-Stellen Treiber mit paralleler Busschnittstelle&lt;br /&gt;
| Alt, teuer, benötigt viele µC-Pins für die parallele Schnittstelle&lt;br /&gt;
| Reichelt&lt;br /&gt;
| [http://www.intersil.com/data/fn/FN3159.pdf Intersil]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Punkt/Streifen (Dot/Bar) LED-Treiber ====&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;bar&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| LM3914&lt;br /&gt;
| ~1,20 €&lt;br /&gt;
| 10-Stellen Balkenanzeigetreiber mit Analogeingang&lt;br /&gt;
| Lineare A/D-Wandlung&lt;br /&gt;
| Reichelt&lt;br /&gt;
| [http://www.national.com/pf/LM/LM3914.html National]&lt;br /&gt;
|-&lt;br /&gt;
| LM3915&lt;br /&gt;
| ~1,40 €&lt;br /&gt;
| 10-Stellen Balkenanzeigetreiber mit Analogeingang&lt;br /&gt;
| Logarithmische A/D-Wandlung&lt;br /&gt;
| Reichelt&lt;br /&gt;
| [http://www.national.com/pf/LM/LM3915.html National]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Analogschalter aus der 4000 Logikreihe ===&lt;br /&gt;
Die folgenden Schalter werden digital gesteuert, daher sind sie im Kapitel [[#Digital|Digital]] einsortiert. Sie basieren auf standard CMOS-Technologien, sind daher weit verbreitet, günstig, haben aber daher auch nur mäßige Eigenschaften und begrenzte Anwendungsbereiche. Analogschalter für Präzisionsanwendungen sind im Kapitel [[#Analog|Analog]].&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;can&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| 4051&lt;br /&gt;
| 0,25&lt;br /&gt;
| 8:1 Analogmultiplexer.&lt;br /&gt;
| Zum µC-gesteuerten Umschalten von Analogsignalen. Je nach Typ sind Analogsignale bis in den 100 MHz Bereich mit einer Schaltfrequenz bis mehrere 10 MHz möglich.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=4051+datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| 4052&lt;br /&gt;
| 0,11&lt;br /&gt;
| Zwei 4:2 Analogmultiplexer.&lt;br /&gt;
| Zum µC-gesteuerten Umschalten von Analogsignalen. Je nach Typ sind Analogsignale bis in den 100 MHz Bereich mit einer Schaltfrequenz bis mehrere 10 MHz möglich.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=4052+datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| 4053&lt;br /&gt;
| 0,16&lt;br /&gt;
| Drei 3:2 Analogmultiplexer.&lt;br /&gt;
| Zum µC-gesteuerten Umschalten von Analogsignalen. Je nach Typ sind Analogsignale bis in den 100 MHz Bereich mit einer Schaltfrequenz bis mehrere 10 MHz möglich.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=4053+datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| 4066&lt;br /&gt;
| 0,15&lt;br /&gt;
| Vierfach Analogschalter&amp;amp;nbsp;/ -koppler.&lt;br /&gt;
| Zum µC-gesteuerten Schalten oder Umschalten von Analogsignalen. Je nach Typ sind  Analogsignale bis in den 100 MHz Bereich mit einer Schaltfrequenz bis mehrere 10 MHz möglich.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.datasheets.org.uk/pdf/347282.pdf 4066.pdf]&lt;br /&gt;
|-&lt;br /&gt;
| 4067&lt;br /&gt;
| 0,60&lt;br /&gt;
| 1:16 Analogmultiplexer/-demultiplexer&lt;br /&gt;
|&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=4067+datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Galvanische Trennelemente ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| CNY17&lt;br /&gt;
| 0,28&lt;br /&gt;
| Optisch, Standardtyp&lt;br /&gt;
| 3,7kV 50-100kHz&lt;br /&gt;
| R,C&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=CNY17 PDF], [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A500%252FCNY17-I_CNY17-II_CNY17-III.pdf; PDF Temic]&lt;br /&gt;
|-&lt;br /&gt;
| 6N137&lt;br /&gt;
| 0,49&lt;br /&gt;
| Optisch, Logikausgang (5V)&lt;br /&gt;
| sehr schnell 14MHz&lt;br /&gt;
| R,D&lt;br /&gt;
| [http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A500%252F6N137.pdf; PDF]&lt;br /&gt;
|-&lt;br /&gt;
| ADUM240*&lt;br /&gt;
| 10&lt;br /&gt;
| Induktiv, 3V/5V Logik&lt;br /&gt;
| extrem schnell, EN90650, 5kV&lt;br /&gt;
| F&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=adum240 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| ISO72*&lt;br /&gt;
| 1,25&lt;br /&gt;
| Kapazitiv, 3V/5V&lt;br /&gt;
| 6kV, bis zu 150MHz&lt;br /&gt;
| DK,F&lt;br /&gt;
| [http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=analog&amp;amp;familyId=897&amp;amp;uiTemplateId=NODE_STRY_PGE_T PDF]&lt;br /&gt;
|-&lt;br /&gt;
| PC817/827/837/847&lt;br /&gt;
| 0,3&lt;br /&gt;
| ?&lt;br /&gt;
| 8x7, x=Anzahl der Optokoppler&lt;br /&gt;
| C, R&lt;br /&gt;
| [http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=analog&amp;amp;familyId=897&amp;amp;uiTemplateId=NODE_STRY_PGE_T PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Displays ===&lt;br /&gt;
Bei den Textdisplays eignet sich praktisch jedes [[HD44780]] konforme Display.&lt;br /&gt;
Praktisch jeder Elektronikversender hat eine Auswahl an verschiedenen Größen zu bieten. &lt;br /&gt;
Wer keinen besonderen Anspruch auf die Größe der Displays hat sollte sich bei Pollin und in Ebay umschauen.&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
&lt;br /&gt;
==== [[EEPROM]] ====&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;EEPROMmemory&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| ST 24C01 BN6, ST 24C02 BN6, ST 24C256 BN6 (allgemein 24C## mit ## Größe in kbit)&lt;br /&gt;
| 0,14€ - 1,50€&lt;br /&gt;
| EEPROM Speicher mit seriellem (I2C) Interface, 1kbit bis 512 kbit Speicher. Viele verschiedene Hersteller.&lt;br /&gt;
| Speichern von Konfigurationsdaten &lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=24C PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Converter ==&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Geschwindigkeit&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| ADC830&lt;br /&gt;
| 6&lt;br /&gt;
| 8-Bit-ADC, Differentiell, Parallel, (DIL-20)&lt;br /&gt;
| 8770 CPS&lt;br /&gt;
| C,R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=adc830 PDF]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| LTC2400CS8&lt;br /&gt;
| 8,30&lt;br /&gt;
| 24-Bit-ADC, Single Ended, Seriell (SPI), (SO-8) &lt;br /&gt;
| ca. 6 CPS&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1155,C1001,C1152,P1636,D1887]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| LTC2440CGN&lt;br /&gt;
| 8,40&lt;br /&gt;
| 24-Bit-ADC, Differentiell, Seriell (SPI), (SSOP-16)&lt;br /&gt;
| bis 3500 CPS&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LTC2440 PDF]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DAC ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| 0,90&lt;br /&gt;
| 8-Bit DAC mit parallelem Businterface.&lt;br /&gt;
| Alt, preiswert. Benötigt viele µC Pins (min. 8, paralleler Bus) und eine doppelte Spannungsversorgung. Langsamere Version: 0808.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=LTC1456+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| 7524 &lt;br /&gt;
| 3,00&lt;br /&gt;
| 8-Bit DAC mit parallelem Businterface&lt;br /&gt;
| Benötigt viele µC Pins. Single-Supply (5V bis 15V).&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.google.de/search?q=7524+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| TDA8444 &lt;br /&gt;
| 1,20&lt;br /&gt;
| Achtfach 6-Bit DAC mit seriellem TWI-Businterface. Bezahlbarer sechsfach-DAC, allerdings mit geringer Auflösung.&lt;br /&gt;
| Dort wo µC gesteuert viele Ausgangskanäle mit geringer, ungenauer Auflösung benötigt werden.&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.google.de/search?q=TDA8444+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| PCF8591&lt;br /&gt;
| 2,50&lt;br /&gt;
| 8-Bit DAC, 8-Bit ADC mit seriellem TWI-Businterface.&lt;br /&gt;
| Z.B. in Regelkreisen wo sowohl ein DAC, als auch ein ADC benötigt wird.&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.google.de/search?q=PFC8591+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| TDA8702&lt;br /&gt;
| 2,50&lt;br /&gt;
| 8-Bit Video DAC mit parallelem Businterface und Clock-Eingang.&lt;br /&gt;
| Schnelle Wandlung bis 30 MHz. Benötigt viele µC Pins.&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.google.de/search?q=TDA8702+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| LTC1661&lt;br /&gt;
| 2,45&lt;br /&gt;
| Dual 10-bit DAC mit seriellem 3-Leitungs-Businterface.&lt;br /&gt;
| Guter Kompromiss aus Preis und Leistung. (Achtung, Micro-SO8-Gehäuse)&lt;br /&gt;
| F, C (Suchfunktion weigert sich manchmal ihn im Conrad-Shop zu finden), R&lt;br /&gt;
| [http://www.google.de/search?q=LTC1661+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| LTC1257&lt;br /&gt;
| 8,-&lt;br /&gt;
| 12-bit DAC mit kaskadierbarem seriellen 3-Leitungs-Businterface.&lt;br /&gt;
| Genauer µC-steuerbarer DAC.&lt;br /&gt;
| C, F, R&lt;br /&gt;
| [http://www.google.de/search?q=LTC1257+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
| LTC1456&lt;br /&gt;
| 10,-&lt;br /&gt;
| 12-bit DAC mit kaskadierbarem seriellen 3-Leitungs-Businterface.&lt;br /&gt;
| Genauer µC-steuerbarer DAC.&lt;br /&gt;
| C&lt;br /&gt;
| [http://www.google.de/search?q=LTC1456+Datasheet Google]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sensoren (aktiv) ==&lt;br /&gt;
=== [[Temperatursensor|Temperatur]] ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| LM75&lt;br /&gt;
| 1,75&lt;br /&gt;
| Temperatursensor mit I²C (TWI) Bus Interface (3.3V und 5V Version) (SMD)&lt;br /&gt;
| &lt;br /&gt;
| D, R, I&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LM75 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| DS1621&lt;br /&gt;
| ~5&lt;br /&gt;
| Temperatursensor mit I²C (TWI) Bus Interface (wie LM75, kein SMD)&lt;br /&gt;
| &lt;br /&gt;
| C, D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| DS18B20&lt;br /&gt;
| 2,95&lt;br /&gt;
| Temperatursensor mit 1-Wire Interface&lt;br /&gt;
|&lt;br /&gt;
| D, R, I&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=DS18B20 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM35&lt;br /&gt;
| 1,19&lt;br /&gt;
| Analoger Temperatursensor&lt;br /&gt;
| 10mV/°C absolut&lt;br /&gt;
| D, R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LM35 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| LM335&lt;br /&gt;
| 0,87&lt;br /&gt;
| Analoger Temperatursensor&lt;br /&gt;
| 10mV/K absolut&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=LM335 PDF]&lt;br /&gt;
|-&lt;br /&gt;
| TSIC 306&lt;br /&gt;
| 6&lt;br /&gt;
| Digitaler Temperatursensor (auch analog oder ratiometrisch)&lt;br /&gt;
| &lt;br /&gt;
| R,C&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q=TSIC306 PDF]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| TSIC 506&lt;br /&gt;
| 6&lt;br /&gt;
| Digitaler Temperatursensor (fertig kalibriert bis zu 0,1°K zwischen 0-45°C)&lt;br /&gt;
| &lt;br /&gt;
| F&lt;br /&gt;
| [http://www.zmd.de/pdf/ZMD%20TSic%20Data%20Sheet%20V3%207.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wenn man z.B. einen Übertemperaturschutz (oder eine andere Schaltung, bei der es nur eine Schaltschwelle gibt) bauen will, dann empfiehlt sich die Verwendung eines NTCs. Dessen Kennlinie ist gegenüber den Kennlinien von z.B. LM335 dahingehend im Vorteil, dass eine geringe Temperaturänderung besser messbar ist.&lt;br /&gt;
&lt;br /&gt;
Eine detailliertere Übersicht zu Temperatursensoren findet sich [[Temperatursensor|hier]], andere Sensoren sind in der [[:Category:Sensorik|Kategorie Sensorik]] zu finden.&lt;br /&gt;
&lt;br /&gt;
= Passive Bauelemente =&lt;br /&gt;
== Sensoren (passiv)==&lt;br /&gt;
=== Licht ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| BPX 65&lt;br /&gt;
| 3,35&lt;br /&gt;
| Fotodiode 10µA, 350-1000nm&lt;br /&gt;
| schnelle Lichtmessungen (bis MHz Bereich), großer Wellenlängenbereich&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.ortodoxism.ro/datasheets/infineon/1-bpx65.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[Temperatursensor|Temperatur]] ===&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| KTY81&lt;br /&gt;
| ~0,50&lt;br /&gt;
| nichtlinear(*), bis 150°C&lt;br /&gt;
| in &amp;amp;#956;C Schaltungen&lt;br /&gt;
| R, D&lt;br /&gt;
| [http://www.semiconductors.philips.com/acrobat/datasheets/KTY84_SERIES_5.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| KTY84&lt;br /&gt;
| 0,72&lt;br /&gt;
| nichtlinear(*), bis 300°C&lt;br /&gt;
| in &amp;amp;#956;C Schaltungen&lt;br /&gt;
| R&lt;br /&gt;
| [http://www.datasheetcatalog.org/datasheet2/e/0l2lc3p1dl8e5dgghsfh2oee43py.pdf PDF]&lt;br /&gt;
|-&lt;br /&gt;
| PT100 / PT1000&lt;br /&gt;
| ab 3,00&lt;br /&gt;
| lineare Kennlinie&lt;br /&gt;
| analoge Messschaltungen&lt;br /&gt;
| F C&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Verschaltet man den Sensor als Spannungsteiler (Abgriff an den ADC), so erhält man dadurch eine meist ausreichende Linearisierung!&lt;br /&gt;
&lt;br /&gt;
== Widerstände ==&lt;br /&gt;
Mit einem Widerstandssortiment, welches die E12-Werte enthält, kann man normalerweise nicht falsch liegen. Denn früher oder später benötigt man jeden Widerstandswert der E12-Reihe einmal.&lt;br /&gt;
&lt;br /&gt;
Für einen Einstieg eignen sich die Sortimente vom Pollin. Auch ein Blick in Ebay kann sich lohnen, um ein Einstiegssortiment zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Wer Schaltungen an Netzspannung entwickelt, sollte auf die &#039;&#039;Operation Voltage&#039;&#039; achten, denn nicht alle Typen weisen die nötige Spannungsfestigkeit auf. Als Daumenregel gilt: &amp;amp;frac12;-Watt-Widerstände oder größer passen immer, zwei bis drei in Reihe geschaltete &amp;amp;frac14;-Watt-Widerständen tun es auch.&lt;br /&gt;
&lt;br /&gt;
== Kondensatoren ==&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| 100nF Keramik&lt;br /&gt;
| ~0.05&lt;br /&gt;
| &lt;br /&gt;
| Als sogenannter Abblockkondensator zwischen VCC und GND vor allem bei Digital-ICs zwingend erforderlich, schadet aber auch bei den meisten Analog-ICs nicht.&lt;br /&gt;
| alle&lt;br /&gt;
| [http://www.datasheetarchive.com/search.php?q= PDF]&lt;br /&gt;
|-&lt;br /&gt;
| 100nF Keramik SMD 0603&lt;br /&gt;
| ~0.01 (bei 100 Stück)&lt;br /&gt;
| SMD 0603&lt;br /&gt;
| Als sogenannter Abblockkondensator zwischen VCC und GND vor allem bei Digital-ICs zwingend erforderlich, schadet aber auch bei den meisten Analog-ICs nicht.&lt;br /&gt;
| D&lt;br /&gt;
| [http://www.google.de/search?num=100&amp;amp;hl=de&amp;amp;q=datasheet+0603+chip-capacitors+filetype%3Apdf&amp;amp;btnG=Suche&amp;amp;meta=lr%3Dlang_de%7Clang_en PDF]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mechanische Bauelemente =&lt;br /&gt;
&lt;br /&gt;
== Taster / Schalter ==&lt;br /&gt;
&lt;br /&gt;
== Steckverbinder ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Anwendungen&lt;br /&gt;
! Lieferant&lt;br /&gt;
! Datenblatt&lt;br /&gt;
|-&lt;br /&gt;
| WSL 10G&lt;br /&gt;
| 0,07&lt;br /&gt;
| Wannenstecker, 10-polig, gerade, Raster 2,54 mm&lt;br /&gt;
| Verbindung zwischen zwei Platinen mit Flachbandkabel&lt;br /&gt;
| R, alle&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFL 10&lt;br /&gt;
| 0,09&lt;br /&gt;
| Pfostenleiste, 10-polig, Schneidklemmtechnik, Raster 2,54 mm&lt;br /&gt;
| Verbindung zwischen zwei Platinen mit Flachbandkabel&lt;br /&gt;
| R,alle&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| AWG 28-10G&lt;br /&gt;
| 0,70€/m&lt;br /&gt;
| Flachbandkabel, 10-polig, 3 Meter, Raster 1,27 mm&lt;br /&gt;
| Verbindung zwischen zwei Platinen mit Flachbandkabel&lt;br /&gt;
| R,alle&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| D-SUB BU 09FB&lt;br /&gt;
| 0,50&lt;br /&gt;
| D-Sub 9-polig auf 10-polig Pfostenleiste mit Flachbandkabel&lt;br /&gt;
| Anschluss für serielle Schnittstelle am PC&lt;br /&gt;
| R&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| 0,35&lt;br /&gt;
| Flachkabel-IC-Sockelverbinder&lt;br /&gt;
| Übergang von Leiterplatte auf Steckbrett&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Anreihklemmen&lt;br /&gt;
| 0,30 &lt;br /&gt;
| Reihenklemme/Anreihklemme (verschieden Typen, für Lochraster: Raster 5.08)&lt;br /&gt;
| Anschluss der Spannungsversorung, leistungsstarke Verbraucher&lt;br /&gt;
| alle&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| 0,30&lt;br /&gt;
| Hohlstecker/DC-Stecker&lt;br /&gt;
| siehe englische Wikipedia [http://en.wikipedia.org/wiki/Coaxial_power_connector Coaxial power connector] &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lieferanten =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lokale Lieferanten: [[Lokale Anbieter]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Allgemeine Lieferantenliste: [[Elektronikversender]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;opamps&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot;&lt;br /&gt;
! Kürzel&lt;br /&gt;
! Name&lt;br /&gt;
! Webseite&lt;br /&gt;
! Kommentar&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&lt;br /&gt;
|Bürklin&lt;br /&gt;
|[http://www.buerklin.de www.buerklin.de]&lt;br /&gt;
|Versand nur Firmen &amp;amp; Studenten, Ladengeschäft in München&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;C&amp;lt;/b&amp;gt;&lt;br /&gt;
|Conrad&lt;br /&gt;
|[http://www.conrad.de www.conrad.de]&lt;br /&gt;
|Gigantisches Sortiment, aber sehr hohe Preise. Nur zu empfehlen, wenn die benötigten Teile nirgendwo anders aufzutreiben sind. Trotzdem kann man auch hier gelegentlich ein Schnäppchen machen.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;D&amp;lt;/b&amp;gt;&lt;br /&gt;
|CSD-Electronics&lt;br /&gt;
|[http://www.csd-electronics.de www.csd-electronics.de]&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;DK&amp;lt;/b&amp;gt;&lt;br /&gt;
|Digikey&lt;br /&gt;
|[http://de.digikey.com www.de.digikey.com]&lt;br /&gt;
|Mindestbestellmenge&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;&lt;br /&gt;
|Farnell&lt;br /&gt;
|[http://www.farnell.de www.farnell.de]&lt;br /&gt;
|Versand nur Firmen &amp;amp; Studenten.  Farnell-Zwischenhändler für Privatkunden: HBE-Shop [http://www.hbe-shop.de] (wenn Ware im Shop nicht gelistet, einfach Farnell-Bestellnummer eingeben)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;I&amp;lt;/b&amp;gt;&lt;br /&gt;
|IT-WNS&lt;br /&gt;
|[http://www.it-wns.de www.it-wns.de]&lt;br /&gt;
|Kein Mindestbestellwert, geringe Versandkosten ab 1,90;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;M&amp;lt;/b&amp;gt;&lt;br /&gt;
|Meilhaus&lt;br /&gt;
|[http://www.meilhaus.de www.meilhaus.de]&lt;br /&gt;
|Nur gewerbliche Kunden&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt;&lt;br /&gt;
|Pollin&lt;br /&gt;
|[http://www.pollin.de www.pollin.de]&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;b&amp;gt;R&amp;lt;/b&amp;gt;&lt;br /&gt;
|Reichelt&lt;br /&gt;
|[http://www.reichelt.de www.reichelt.de]&lt;br /&gt;
|Hohe Mindestbestellmenge für Ausland&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Bauteile|!]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Temperatursensor&amp;diff=41780</id>
		<title>Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Temperatursensor&amp;diff=41780"/>
		<updated>2009-12-31T16:25:38Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: AVR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Will man mit einem [[Mikrocontroller]] Temperaturen messen, dann braucht man&lt;br /&gt;
* einen [[Sensor]], der die Temperatur z.B. in eine Spannung oder einen Strom umwandelt&lt;br /&gt;
* einen [[ADC | AD-Wandler]], der das Signal digitalisiert. Der kann auf dem Sensor oder dem Mikrocontroller integriert sein.&lt;br /&gt;
&lt;br /&gt;
Temperatursensoren gibt es nun in allen möglichen Varianten. Vom temperaturabhängigen [[Widerstand]] bis zum fertig abgeglichenen All-in-one-Bauteil mit digitalem Ausgang. Wie bei allen Sensoren sollte man auch hier genau hinschauen und [[Auflösung und Genauigkeit]] unterscheiden.&lt;br /&gt;
&lt;br /&gt;
== Analoge Temperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
=== PT100 ===&lt;br /&gt;
&lt;br /&gt;
Unter einem PT100 versteht man einen Platinwiderstand, der bei 0°C einen Widerstand von 100 Ohm hat.&lt;br /&gt;
Platinwiderstände sind temperaturabhängige Widerstände mit hoher Wiederholgenauigkeit und Konstanz[http://de.wikipedia.org/wiki/Konstante].  Wegen der relativ geringen Widerstandsänderung von nur ca. 0,4 Ohm pro Grad ist etwas mehr Schaltungsaufwand erforderlich als bei anderen Sensoren. Genauere Formeln zur Temperaturbestimmung gibt es u.a. bei der [http://de.wikipedia.org/wiki/Pt100 Wikipedia]. Ein Schaltplan findet sich bei der [http://www.heise.de/ct/04/22/236/ c&#039;t].&lt;br /&gt;
&lt;br /&gt;
Die Sensoren gibt es auch mit anderen Widerstandswerten, z.B. mit 1000&amp;amp;Omega; und heißen dann entsprechend PT1000.&lt;br /&gt;
&lt;br /&gt;
Vorteil:&lt;br /&gt;
* genormt&lt;br /&gt;
* hohe Linearität&lt;br /&gt;
* hohe Wiederholgenauigkeit&lt;br /&gt;
* einfach austauschbar&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* relativ teuer (bei segor.de ab 3,80&amp;amp;euro;)&lt;br /&gt;
* brauchen aufwendigere Auswerteschaltung&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.heise.de/ct/04/22/236/ c&#039;t-Artikel: Mikrocontroller-Programmierung: Timer, Sensoren und Drehgeber (mit PT100 Schaltung)]&lt;br /&gt;
&lt;br /&gt;
=== NTC/PTC ===&lt;br /&gt;
&lt;br /&gt;
NTC und PTC sind temperaturabhängige Widerstände.&lt;br /&gt;
&lt;br /&gt;
* NTC (engl. &#039;&#039;&#039;N&#039;&#039;&#039;egative &#039;&#039;&#039;T&#039;&#039;&#039;emperature &#039;&#039;&#039;C&#039;&#039;&#039;oefficient, Heißleiter), hat bei hohen Temperaturen seinen niedrigsten Widerstand, z.B. Silizium&lt;br /&gt;
* PTC (engl. &#039;&#039;&#039;P&#039;&#039;&#039;ositive &#039;&#039;&#039;T&#039;&#039;&#039;emperature &#039;&#039;&#039;C&#039;&#039;&#039;oefficient, Kaltleiter), hat bei niedrigen Temperaturen seinen geringsten Widerstand, z.B. Glühlampe&lt;br /&gt;
&lt;br /&gt;
Um den Widerstandswert zu messen schaltet man sie mit einem normalen Widerstand oder einer [[Konstantstromquelle]] in Reihe zu einem [[Spannungsteiler]] und misst den Spannungsabfall. Eine Beispielschaltung findet sich [http://www.mathar.com/msp_thermo1.html hier].&lt;br /&gt;
&lt;br /&gt;
Vorteil:&lt;br /&gt;
* billig (Reichelt 0,29 &amp;amp;euro;)&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* müssen abgeglichen werden&lt;br /&gt;
* brauchen A/D-Wandler&lt;br /&gt;
* sind nichtlinear&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.sprut.de/electronic/temeratur/temp.htm Temperaturabhängige Stromquelle und NTC/PTC inclusive Linearisierung]&lt;br /&gt;
&lt;br /&gt;
=== LMx35 ===&lt;br /&gt;
&lt;br /&gt;
Eine IC-Familie, die pro Kelvin Temperaturänderung ihre Ausgangsspannung um 10&amp;amp;nbsp;mV ändert. Die ICs gibt es in verschiedenen Genauigkeiten und Temperaturbereichen mit den Bezeichnungen LM135(A), LM235(A) und LM335(A). Der günstigste ist der LM335 mit einem Temperaturbereich von −40 … +100°C.&lt;br /&gt;
In verschiedenen Bauformen erhältlich. Beispielschaltungen finden sich im [http://www.national.com/ds.cgi/LM/LM135.pdf Datenblatt] und [http://www.suessbrich.info/elek/elektherm1.html hier]&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* hat auch ohne Kalibrierung eine Genauigkeit von einem Grad (bei 25°C)&lt;br /&gt;
* relativ billig (LM335 bei Reichelt ab 0,50&amp;amp;nbsp;€)&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt A/D-Wandler&lt;br /&gt;
* bei längerer Anschlussleitung störanfällig&lt;br /&gt;
&lt;br /&gt;
=== LM334 ===&lt;br /&gt;
&lt;br /&gt;
Ein IC ähnlich dem LM335 mit dem Unterschied, dass der durch das IC fließende Strom proportional von der Temperatur abhängt. Mit einer einfachen Schaltung aus nur zwei Widerständen kann man dann den Strom in einer Weise wandeln, dass pro Kelvin eine Spannungsänderung von 10mV ausgegeben wird. Da die Strom-Spannungswandlung auf der Platine (und damit nahe am AD-Wandler) stattfindet und die Übertragung des Messwerts durch einen Strom stattfindet, sind Störungen durch Netzbrumm etc. viel geringer als beim LM335&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
&amp;lt;!-- * hat auch ohne Kalibrierung eine Genauigkeit von einem Grad (bei 25°C) &lt;br /&gt;
Laut Datenblatt +-3°C&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* relativ billig ([http://www.reichelt.de/?ARTICLE=10468 Reichelt 0,54 &amp;amp;euro;])&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt A/D-Wandler&lt;br /&gt;
* Bereich 0°C-70°C&lt;br /&gt;
&lt;br /&gt;
Ähnliche ICs:&lt;br /&gt;
* AD592 (Ausgangsstrom 1µA pro Kelvin, absolute Temperatur) [http://www.reichelt.de/?ARTICLE=3825 Reichelt: 3,75 €], Conrad 174912 8,50 &amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SMT160-30 ===&lt;br /&gt;
&lt;br /&gt;
Ist ein Zwischending zwischen Digital und Analog. Sein Ausgangssignal ist ein digitales PWM-Signal, zu dessen Messung man am besten den Input-Capture-Eingang eines Mikrocontrollers verwendet. Man kann ihn also wie einen analogen Sensor nur indirekt auslesen, anstatt über einen AD-Wandler hier über einen Timer.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Digitales PWM-Signal ist unempfindlich gegen Störeinflüsse&lt;br /&gt;
* gibt es in SO8, TO18, TO92 und &amp;lt;b&amp;gt;TO220&amp;lt;/b&amp;gt;, gut befestigbar, z.B am Kühlkörper&lt;br /&gt;
* linear&lt;br /&gt;
* kein Abgleich nötig&lt;br /&gt;
&lt;br /&gt;
Nachteile (viele):&lt;br /&gt;
* benötigt Timer&lt;br /&gt;
* jittert extrem, genaue Messungen nur über Mittelung / Filterung möglich&lt;br /&gt;
* nicht nur das PWM-Verhältnis, sondern auf die Frequenz ist temp-abhängig (1-4kHz)&lt;br /&gt;
* teuer (Farnell 10,90&amp;amp;euro; +16%, Conrad 9,xx&amp;amp;euro; , www.hy-line.de ??).&lt;br /&gt;
* TO92 Gehäuse ist günstiger, dafür weniger genau&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* http://www.hy-line.de/co/sensor-tec/hersteller/smartec/smt-160-30/index.html&lt;br /&gt;
&lt;br /&gt;
=== Thermoelement ===&lt;br /&gt;
&lt;br /&gt;
Ein Thermoelement besteht im einfachsten Fall aus zwei ungleichen Metallendrähten, die an einem Punkt miteinander verbunden sind und bei dem die Verbindungsstelle einer anderen Temperatur ausgesetzt ist als die offenen Enden der Drähte. An den offenen Enden der Drähten entsteht eine Spannung (Thermospannung). Dieser Effekt wurde 1821 von Thomas Seebeck entdeckt ([http://de.wikipedia.org/wiki/Seebeck-Effekt Seebeck-Effekt] bei Wikipedia). Eine weitere Anwendung ist der thermoelektrische Generator (&amp;quot;Thermogenerator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Vorteil:&lt;br /&gt;
* über einen sehr weiten Temperaturbereich einsetzbar&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* die sehr geringen Temperaturspannungen im Mikrovoltbereich benötigen eine sehr gute Auswertelektronik (guter Analogteil + AD-Wandler).&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://digital.ni.com/worldwide/germany.nsf/web/all/7A4F02BAEFEC22AC802567F6003E0D6E  Temperaturmessung mit Thermoelementen] - Eine Einführung von David Potter (deutsche Überarbeitung: G.Sinkovic) (inkl. Erläuterung der Kaltstellenkompensation)&lt;br /&gt;
* [http://www.ipetronik.com/pdf/Newsletter/Ipetronik_NL2_2004_d.pdf Warum Thermoelemente Relativtemperaturen messen! oder Was ist eine Kaltstelle?] - Technische Information von www.ipetronik.com (PDF, 272 KB)&lt;br /&gt;
&lt;br /&gt;
== Digitale Temperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
=== DS1621 ===&lt;br /&gt;
&lt;br /&gt;
Der DS1621 ist Temperatursensor und A/D-Wandler in einem. Er gibt seine Daten per [[I²C]]-[[Bus]] aus. Ein Schaltplan für einen elektronischen Thermometer mit diesem IC findet sich [http://www.myplace.nu/avr/thermo/ hier].&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* bereits kalibriert&lt;br /&gt;
* kein A/D-Wandler nötig&lt;br /&gt;
* da I²C ein Bus ist, kann man mehrere DS1621 und andere I²C-Bausteine zusammen anschließen und braucht dafür trotzdem nur zwei I/O-Ports.&lt;br /&gt;
* Messbereich -55°C to +125°C &lt;br /&gt;
* Genauigkeit +-0,5°&lt;br /&gt;
* Auflösung besser 0,01°, wenn man die beiden Zählerregister (Count-Remain und Count-per-C) auswertet&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* teuer (Segor 5,80&amp;amp;euro;; RS 3,95&amp;amp;euro;; Conrad 4,99&amp;amp;euro;)&lt;br /&gt;
* trotzdem die meisten Register [[Speicher#NVRAM | nichtflüchtig]] sind, kann man ihn nicht als Stand-Alone-Thermostat einsetzen, da er erst nach einem Start-Conversion-Befehl zu messen beginnt.&lt;br /&gt;
&lt;br /&gt;
Nachfolger:&lt;br /&gt;
* DS1631, DS1631A (Auto-Start-&amp;gt; Stand-Alone-Thermostat), DS1731&lt;br /&gt;
* weitere Stand-Alone-Thermostaten: DS1821, DS1629&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LM75 ===&lt;br /&gt;
&lt;br /&gt;
Der LM75 ist so ähnlich wie der DS1621, allerdings nur in SMD erhältlich und nicht so genau. Er ist aber öfters mal auf PC-Mainboards zu finden, so dass man beim Schlachten eines solchen günstig an einen Temperatursensor kommen kann. Einen Schaltplan findet man [http://www.mcselec.com/index.php?option=com_docman&amp;amp;task=cat_view&amp;amp;gid=83&amp;amp;limit=1&amp;amp;limitstart=35 hier].&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* bereits kalibriert&lt;br /&gt;
* kein A/D-Wandler nötig&lt;br /&gt;
* I²C-Bus Ausgang&lt;br /&gt;
* billiger als DS1621 (Reichelt 1,45 &amp;amp;euro;; RS 3V: 3,75&amp;amp;euro;; 5V: 2,72&amp;amp;euro;)&lt;br /&gt;
* Auflösung 0,5°&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* nur im SMD-Gehäuse erhältlich&lt;br /&gt;
* relativ ungenau (+-2°), kann man jedoch kalibrieren / kompensieren&lt;br /&gt;
&lt;br /&gt;
Kompatible Typen:&lt;br /&gt;
* AD7415ART&lt;br /&gt;
&lt;br /&gt;
=== TMP175 / TMP75 ===&lt;br /&gt;
&lt;br /&gt;
Ähnelt dem LM75 stark! Temperatursensor von Texas Instruments.&lt;br /&gt;
&lt;br /&gt;
=== DS18S20 / DS18B20 ===&lt;br /&gt;
&lt;br /&gt;
Der DS18S20 (Nachfolger des DS1820) und DS18B20 sind scheinbar Temperatursensoren und A/D-Wandler in einem. Wenn man genauer hinschaut, stellt man fest, dass es sich um direktwandelnde Sensoren handelt. Die Temperatur wird ohne Umweg über eine analoge Zwischengröße (Spannung oder Strom) in ein digitales Signal überführt. Die Datenkommunikation erfolgt über ein 1-Wire-Interface, wodurch man am [[Mikrocontroller]] mit nur einen einzigen I/O-Pin auskommen kann. Außerdem beherrschen sie die parasitäre Stromversorgung, d.h. man braucht für Daten und Stromversorgung zusammen nur zwei Leitungen.  Der DS18B20 hat 12 Bit Auflösung gegenüber 9 Bit Auflösung beim DS18S20.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* bereits kalibriert&lt;br /&gt;
* Genauigkeit +-0,5°&lt;br /&gt;
* 1-Wire-Ausgang&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* relativ teuer: Reichelt: 2,50&amp;amp;euro; / CSD: 1,85&amp;amp;euro; / Conrad 5,08&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://chaokhun.kmitl.ac.th/~kswichit/avrthermo/avrthermo.html Ein Schaltplan]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-27035.html Code zur Ansteuerung]&lt;br /&gt;
* [http://pdfserv.maxim-ic.com/en/ds/DS18S20.pdf Datenblatt DS18S20] &lt;br /&gt;
* [http://pdfserv.maxim-ic.com/en/ds/DS18B20.pdf Datenblatt DS18B20]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-248219.html Webserver zur Ansteuerung von bis zu 63 Bausteinen]&lt;br /&gt;
* [http://www.teslabs.com/openplayer/docs/docs/other/ds18b20_pre1.pdf PDF Anleitung zur Beschaltung und Programmierung (C)]&lt;br /&gt;
&lt;br /&gt;
=== DS1822 ===&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie DS18S20, aber weniger genau (+-2°) und in großen Stückzahlen billiger. Wegen der geringeren Verbreitung kommt der Preisvorteil aber bei Einzelstücken nicht beim Kunden an. So kostet er bei Reichelt mit 3,50&amp;amp;euro; mehr als der DS18S20.&lt;br /&gt;
&lt;br /&gt;
=== DS1921 / DS1922 ===&lt;br /&gt;
&lt;br /&gt;
Sind wie die DS1821 1-wire-Sensoren mit zusätzlicher Logging-Funktion.&lt;br /&gt;
Im iButton-Gehäuse befindet sich eine Lithium-Zelle, eine RTC, CMOS-RAM und der Temp-Sensor. Nach umfangreicher Progammierung startet der Button seine Mission (Aufzeichnung des Temperaturverlaufs).&lt;br /&gt;
Gibt es auch mit zusätzlicher Feuchtemessung (DS1923).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TSic ===&lt;br /&gt;
&lt;br /&gt;
Die TSic Sensoren werden baugleich von 3 Herstellern angeboten:&lt;br /&gt;
* ZMD ([http://www.zmd.biz/temp.php?group=temp&amp;amp;content=products Homepage]) ([http://tarr.uspto.gov/servlet/tarr?regser=serial&amp;amp;entry=78673282 Trademark])&lt;br /&gt;
* IST AG ([http://www.ist-ag.com/eh/ist-ag/de/home.nsf/contentview/8F5D32432CAC53C2C1257405003C2433 Homepage])&lt;br /&gt;
* Hygrosens ([http://www.hygrosens.de/english/shop/list.html?tx_ttproducts_pi1%5Bcat%5D=11&amp;amp;cHash=dcd89b823b Homepage])&lt;br /&gt;
&lt;br /&gt;
Die TSic Sensoren ([http://www.zmd.biz/pdf/ZMD%20TSic%20Data%20Sheet%20V3%207.pdf Datenblatt]) geben ihre Temperaturmessdaten automatisch in einem festen Intervall aus. Daher muss der Host nur warten bis die nächsten Messdaten rausgeschickt werden. Die TSic Sensoren die es im freien Handel gibt, geben ihre Messdaten alle 100ms (10Hz) aus. &lt;br /&gt;
Zur Übertragung wird das [http://www.zmd.biz/pdf/IST_TSic_ZACwire_V2.3%20Digital%20Output_17-Oct-06.pdf ZACwire] Protokoll benutzt. Es handelt sich um eine einfach zwei Byte Übertragung per Manchester-Code. Diese zwei Byte repräsentieren den digital gewandelten Temperaturwert. Im Gegensatz zu Sensoren wie den DS18xxx von Dallas muss dieser Wert aber erst auf einen dezimalen Wert umgerechnet werden. &lt;br /&gt;
Die Sensoren kommen mit 3 Pins aus (VCC, GND, Dout).&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Bereits kalibriert&lt;br /&gt;
* Verschiedene Genauigkeiten lieferbar&lt;br /&gt;
* Sehr einfaches Kommunikationsprotokoll&lt;br /&gt;
* Geringer Stromverbrauch&lt;br /&gt;
* Hochgenau: bis zu +/- 0.1°C (TSic 50x)&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* Recht teuer (Reichelt: 4,70&amp;amp;euro; für den TSic206)&lt;br /&gt;
* Nur ein Sensor an einem I/O nutzbar (Kein Bussystem)&lt;br /&gt;
&lt;br /&gt;
Achtung! &lt;br /&gt;
Die TSic Sensoren gibt es auch als Version mit analog Ausgang. Bei der Typenbezeichnung gibt die 3. Stelle an ob es sich um die analog- oder Digitalversion handelt (1 = analog, 6 = digital). &lt;br /&gt;
Der TSic201 ist also analog, wärend der TSic206 ein digitaler ist.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/45573#347765 Ansatz zum Empfang der Daten]&lt;br /&gt;
* [http://ethersex.de/index.php/Zacwire Fertige Ansteuerung durch AVR in Ethersex]&lt;br /&gt;
* [http://www.zmd.biz/temp.php?group=temp&amp;amp;content=products Herstellerseite mit Datenblättern und FAQ]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/82087 Diskussion mit Beispielcode (MSP430, AVR, PIC)]&lt;br /&gt;
* [http://www.mikrocontroller.net/search?query=tsic* Suche in den Foren]&lt;br /&gt;
&lt;br /&gt;
=== SHT1x/SHT7x ===&lt;br /&gt;
&lt;br /&gt;
Der SHT1x/SHT7x (SHT10, SHT11, SHT15, STH71, SHT75) sind kombinierte Temperatur- und Feuchtesensoren von [http://www.sensirion.com Sensirion]. Sie unterscheiden sich in Bauform und Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* digitale Schnittstelle mit einfacher [[I²C]]-&#039;&#039;ähnlicher&#039;&#039; Ansteuerung&lt;br /&gt;
* keine Kalibrierung notwendig&lt;br /&gt;
* Beispielcode (C, MC51) auf der Sensirion-Seite verfügbar (relativ leicht portierbar)&lt;br /&gt;
* interne Heizelemente (Funktionsprüfung, &amp;quot;rauhe&amp;quot; Umgebung)&lt;br /&gt;
* Spannungsmonitor (&amp;quot;Battery fail&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kann nicht am [[I²C]] Bus betrieben werden, theoretisch gleiche Clockleitung möglich, fixe Adresse&lt;br /&gt;
* relativ teuer (Farnell 18,60&amp;amp;euro;)&lt;br /&gt;
&lt;br /&gt;
[[Category:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Temperatursensor&amp;diff=41779</id>
		<title>Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Temperatursensor&amp;diff=41779"/>
		<updated>2009-12-31T16:21:41Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: TSic in Ethersex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Will man mit einem [[Mikrocontroller]] Temperaturen messen, dann braucht man&lt;br /&gt;
* einen [[Sensor]], der die Temperatur z.B. in eine Spannung oder einen Strom umwandelt&lt;br /&gt;
* einen [[ADC | AD-Wandler]], der das Signal digitalisiert. Der kann auf dem Sensor oder dem Mikrocontroller integriert sein.&lt;br /&gt;
&lt;br /&gt;
Temperatursensoren gibt es nun in allen möglichen Varianten. Vom temperaturabhängigen [[Widerstand]] bis zum fertig abgeglichenen All-in-one-Bauteil mit digitalem Ausgang. Wie bei allen Sensoren sollte man auch hier genau hinschauen und [[Auflösung und Genauigkeit]] unterscheiden.&lt;br /&gt;
&lt;br /&gt;
== Analoge Temperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
=== PT100 ===&lt;br /&gt;
&lt;br /&gt;
Unter einem PT100 versteht man einen Platinwiderstand, der bei 0°C einen Widerstand von 100 Ohm hat.&lt;br /&gt;
Platinwiderstände sind temperaturabhängige Widerstände mit hoher Wiederholgenauigkeit und Konstanz[http://de.wikipedia.org/wiki/Konstante].  Wegen der relativ geringen Widerstandsänderung von nur ca. 0,4 Ohm pro Grad ist etwas mehr Schaltungsaufwand erforderlich als bei anderen Sensoren. Genauere Formeln zur Temperaturbestimmung gibt es u.a. bei der [http://de.wikipedia.org/wiki/Pt100 Wikipedia]. Ein Schaltplan findet sich bei der [http://www.heise.de/ct/04/22/236/ c&#039;t].&lt;br /&gt;
&lt;br /&gt;
Die Sensoren gibt es auch mit anderen Widerstandswerten, z.B. mit 1000&amp;amp;Omega; und heißen dann entsprechend PT1000.&lt;br /&gt;
&lt;br /&gt;
Vorteil:&lt;br /&gt;
* genormt&lt;br /&gt;
* hohe Linearität&lt;br /&gt;
* hohe Wiederholgenauigkeit&lt;br /&gt;
* einfach austauschbar&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* relativ teuer (bei segor.de ab 3,80&amp;amp;euro;)&lt;br /&gt;
* brauchen aufwendigere Auswerteschaltung&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.heise.de/ct/04/22/236/ c&#039;t-Artikel: Mikrocontroller-Programmierung: Timer, Sensoren und Drehgeber (mit PT100 Schaltung)]&lt;br /&gt;
&lt;br /&gt;
=== NTC/PTC ===&lt;br /&gt;
&lt;br /&gt;
NTC und PTC sind temperaturabhängige Widerstände.&lt;br /&gt;
&lt;br /&gt;
* NTC (engl. &#039;&#039;&#039;N&#039;&#039;&#039;egative &#039;&#039;&#039;T&#039;&#039;&#039;emperature &#039;&#039;&#039;C&#039;&#039;&#039;oefficient, Heißleiter), hat bei hohen Temperaturen seinen niedrigsten Widerstand, z.B. Silizium&lt;br /&gt;
* PTC (engl. &#039;&#039;&#039;P&#039;&#039;&#039;ositive &#039;&#039;&#039;T&#039;&#039;&#039;emperature &#039;&#039;&#039;C&#039;&#039;&#039;oefficient, Kaltleiter), hat bei niedrigen Temperaturen seinen geringsten Widerstand, z.B. Glühlampe&lt;br /&gt;
&lt;br /&gt;
Um den Widerstandswert zu messen schaltet man sie mit einem normalen Widerstand oder einer [[Konstantstromquelle]] in Reihe zu einem [[Spannungsteiler]] und misst den Spannungsabfall. Eine Beispielschaltung findet sich [http://www.mathar.com/msp_thermo1.html hier].&lt;br /&gt;
&lt;br /&gt;
Vorteil:&lt;br /&gt;
* billig (Reichelt 0,29 &amp;amp;euro;)&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* müssen abgeglichen werden&lt;br /&gt;
* brauchen A/D-Wandler&lt;br /&gt;
* sind nichtlinear&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.sprut.de/electronic/temeratur/temp.htm Temperaturabhängige Stromquelle und NTC/PTC inclusive Linearisierung]&lt;br /&gt;
&lt;br /&gt;
=== LMx35 ===&lt;br /&gt;
&lt;br /&gt;
Eine IC-Familie, die pro Kelvin Temperaturänderung ihre Ausgangsspannung um 10&amp;amp;nbsp;mV ändert. Die ICs gibt es in verschiedenen Genauigkeiten und Temperaturbereichen mit den Bezeichnungen LM135(A), LM235(A) und LM335(A). Der günstigste ist der LM335 mit einem Temperaturbereich von −40 … +100°C.&lt;br /&gt;
In verschiedenen Bauformen erhältlich. Beispielschaltungen finden sich im [http://www.national.com/ds.cgi/LM/LM135.pdf Datenblatt] und [http://www.suessbrich.info/elek/elektherm1.html hier]&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* hat auch ohne Kalibrierung eine Genauigkeit von einem Grad (bei 25°C)&lt;br /&gt;
* relativ billig (LM335 bei Reichelt ab 0,50&amp;amp;nbsp;€)&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt A/D-Wandler&lt;br /&gt;
* bei längerer Anschlussleitung störanfällig&lt;br /&gt;
&lt;br /&gt;
=== LM334 ===&lt;br /&gt;
&lt;br /&gt;
Ein IC ähnlich dem LM335 mit dem Unterschied, dass der durch das IC fließende Strom proportional von der Temperatur abhängt. Mit einer einfachen Schaltung aus nur zwei Widerständen kann man dann den Strom in einer Weise wandeln, dass pro Kelvin eine Spannungsänderung von 10mV ausgegeben wird. Da die Strom-Spannungswandlung auf der Platine (und damit nahe am AD-Wandler) stattfindet und die Übertragung des Messwerts durch einen Strom stattfindet, sind Störungen durch Netzbrumm etc. viel geringer als beim LM335&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
&amp;lt;!-- * hat auch ohne Kalibrierung eine Genauigkeit von einem Grad (bei 25°C) &lt;br /&gt;
Laut Datenblatt +-3°C&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* relativ billig ([http://www.reichelt.de/?ARTICLE=10468 Reichelt 0,54 &amp;amp;euro;])&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt A/D-Wandler&lt;br /&gt;
* Bereich 0°C-70°C&lt;br /&gt;
&lt;br /&gt;
Ähnliche ICs:&lt;br /&gt;
* AD592 (Ausgangsstrom 1µA pro Kelvin, absolute Temperatur) [http://www.reichelt.de/?ARTICLE=3825 Reichelt: 3,75 €], Conrad 174912 8,50 &amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
=== SMT160-30 ===&lt;br /&gt;
&lt;br /&gt;
Ist ein Zwischending zwischen Digital und Analog. Sein Ausgangssignal ist ein digitales PWM-Signal, zu dessen Messung man am besten den Input-Capture-Eingang eines Mikrocontrollers verwendet. Man kann ihn also wie einen analogen Sensor nur indirekt auslesen, anstatt über einen AD-Wandler hier über einen Timer.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Digitales PWM-Signal ist unempfindlich gegen Störeinflüsse&lt;br /&gt;
* gibt es in SO8, TO18, TO92 und &amp;lt;b&amp;gt;TO220&amp;lt;/b&amp;gt;, gut befestigbar, z.B am Kühlkörper&lt;br /&gt;
* linear&lt;br /&gt;
* kein Abgleich nötig&lt;br /&gt;
&lt;br /&gt;
Nachteile (viele):&lt;br /&gt;
* benötigt Timer&lt;br /&gt;
* jittert extrem, genaue Messungen nur über Mittelung / Filterung möglich&lt;br /&gt;
* nicht nur das PWM-Verhältnis, sondern auf die Frequenz ist temp-abhängig (1-4kHz)&lt;br /&gt;
* teuer (Farnell 10,90&amp;amp;euro; +16%, Conrad 9,xx&amp;amp;euro; , www.hy-line.de ??).&lt;br /&gt;
* TO92 Gehäuse ist günstiger, dafür weniger genau&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* http://www.hy-line.de/co/sensor-tec/hersteller/smartec/smt-160-30/index.html&lt;br /&gt;
&lt;br /&gt;
=== Thermoelement ===&lt;br /&gt;
&lt;br /&gt;
Ein Thermoelement besteht im einfachsten Fall aus zwei ungleichen Metallendrähten, die an einem Punkt miteinander verbunden sind und bei dem die Verbindungsstelle einer anderen Temperatur ausgesetzt ist als die offenen Enden der Drähte. An den offenen Enden der Drähten entsteht eine Spannung (Thermospannung). Dieser Effekt wurde 1821 von Thomas Seebeck entdeckt ([http://de.wikipedia.org/wiki/Seebeck-Effekt Seebeck-Effekt] bei Wikipedia). Eine weitere Anwendung ist der thermoelektrische Generator (&amp;quot;Thermogenerator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Vorteil:&lt;br /&gt;
* über einen sehr weiten Temperaturbereich einsetzbar&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* die sehr geringen Temperaturspannungen im Mikrovoltbereich benötigen eine sehr gute Auswertelektronik (guter Analogteil + AD-Wandler).&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://digital.ni.com/worldwide/germany.nsf/web/all/7A4F02BAEFEC22AC802567F6003E0D6E  Temperaturmessung mit Thermoelementen] - Eine Einführung von David Potter (deutsche Überarbeitung: G.Sinkovic) (inkl. Erläuterung der Kaltstellenkompensation)&lt;br /&gt;
* [http://www.ipetronik.com/pdf/Newsletter/Ipetronik_NL2_2004_d.pdf Warum Thermoelemente Relativtemperaturen messen! oder Was ist eine Kaltstelle?] - Technische Information von www.ipetronik.com (PDF, 272 KB)&lt;br /&gt;
&lt;br /&gt;
== Digitale Temperatursensoren ==&lt;br /&gt;
&lt;br /&gt;
=== DS1621 ===&lt;br /&gt;
&lt;br /&gt;
Der DS1621 ist Temperatursensor und A/D-Wandler in einem. Er gibt seine Daten per [[I²C]]-[[Bus]] aus. Ein Schaltplan für einen elektronischen Thermometer mit diesem IC findet sich [http://www.myplace.nu/avr/thermo/ hier].&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* bereits kalibriert&lt;br /&gt;
* kein A/D-Wandler nötig&lt;br /&gt;
* da I²C ein Bus ist, kann man mehrere DS1621 und andere I²C-Bausteine zusammen anschließen und braucht dafür trotzdem nur zwei I/O-Ports.&lt;br /&gt;
* Messbereich -55°C to +125°C &lt;br /&gt;
* Genauigkeit +-0,5°&lt;br /&gt;
* Auflösung besser 0,01°, wenn man die beiden Zählerregister (Count-Remain und Count-per-C) auswertet&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* teuer (Segor 5,80&amp;amp;euro;; RS 3,95&amp;amp;euro;; Conrad 4,99&amp;amp;euro;)&lt;br /&gt;
* trotzdem die meisten Register [[Speicher#NVRAM | nichtflüchtig]] sind, kann man ihn nicht als Stand-Alone-Thermostat einsetzen, da er erst nach einem Start-Conversion-Befehl zu messen beginnt.&lt;br /&gt;
&lt;br /&gt;
Nachfolger:&lt;br /&gt;
* DS1631, DS1631A (Auto-Start-&amp;gt; Stand-Alone-Thermostat), DS1731&lt;br /&gt;
* weitere Stand-Alone-Thermostaten: DS1821, DS1629&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LM75 ===&lt;br /&gt;
&lt;br /&gt;
Der LM75 ist so ähnlich wie der DS1621, allerdings nur in SMD erhältlich und nicht so genau. Er ist aber öfters mal auf PC-Mainboards zu finden, so dass man beim Schlachten eines solchen günstig an einen Temperatursensor kommen kann. Einen Schaltplan findet man [http://www.mcselec.com/index.php?option=com_docman&amp;amp;task=cat_view&amp;amp;gid=83&amp;amp;limit=1&amp;amp;limitstart=35 hier].&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* bereits kalibriert&lt;br /&gt;
* kein A/D-Wandler nötig&lt;br /&gt;
* I²C-Bus Ausgang&lt;br /&gt;
* billiger als DS1621 (Reichelt 1,45 &amp;amp;euro;; RS 3V: 3,75&amp;amp;euro;; 5V: 2,72&amp;amp;euro;)&lt;br /&gt;
* Auflösung 0,5°&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* nur im SMD-Gehäuse erhältlich&lt;br /&gt;
* relativ ungenau (+-2°), kann man jedoch kalibrieren / kompensieren&lt;br /&gt;
&lt;br /&gt;
Kompatible Typen:&lt;br /&gt;
* AD7415ART&lt;br /&gt;
&lt;br /&gt;
=== TMP175 / TMP75 ===&lt;br /&gt;
&lt;br /&gt;
Ähnelt dem LM75 stark! Temperatursensor von Texas Instruments.&lt;br /&gt;
&lt;br /&gt;
=== DS18S20 / DS18B20 ===&lt;br /&gt;
&lt;br /&gt;
Der DS18S20 (Nachfolger des DS1820) und DS18B20 sind scheinbar Temperatursensoren und A/D-Wandler in einem. Wenn man genauer hinschaut, stellt man fest, dass es sich um direktwandelnde Sensoren handelt. Die Temperatur wird ohne Umweg über eine analoge Zwischengröße (Spannung oder Strom) in ein digitales Signal überführt. Die Datenkommunikation erfolgt über ein 1-Wire-Interface, wodurch man am [[Mikrocontroller]] mit nur einen einzigen I/O-Pin auskommen kann. Außerdem beherrschen sie die parasitäre Stromversorgung, d.h. man braucht für Daten und Stromversorgung zusammen nur zwei Leitungen.  Der DS18B20 hat 12 Bit Auflösung gegenüber 9 Bit Auflösung beim DS18S20.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* bereits kalibriert&lt;br /&gt;
* Genauigkeit +-0,5°&lt;br /&gt;
* 1-Wire-Ausgang&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* relativ teuer: Reichelt: 2,50&amp;amp;euro; / CSD: 1,85&amp;amp;euro; / Conrad 5,08&amp;amp;euro;&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://chaokhun.kmitl.ac.th/~kswichit/avrthermo/avrthermo.html Ein Schaltplan]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-27035.html Code zur Ansteuerung]&lt;br /&gt;
* [http://pdfserv.maxim-ic.com/en/ds/DS18S20.pdf Datenblatt DS18S20] &lt;br /&gt;
* [http://pdfserv.maxim-ic.com/en/ds/DS18B20.pdf Datenblatt DS18B20]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-248219.html Webserver zur Ansteuerung von bis zu 63 Bausteinen]&lt;br /&gt;
* [http://www.teslabs.com/openplayer/docs/docs/other/ds18b20_pre1.pdf PDF Anleitung zur Beschaltung und Programmierung (C)]&lt;br /&gt;
&lt;br /&gt;
=== DS1822 ===&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie DS18S20, aber weniger genau (+-2°) und in großen Stückzahlen billiger. Wegen der geringeren Verbreitung kommt der Preisvorteil aber bei Einzelstücken nicht beim Kunden an. So kostet er bei Reichelt mit 3,50&amp;amp;euro; mehr als der DS18S20.&lt;br /&gt;
&lt;br /&gt;
=== DS1921 / DS1922 ===&lt;br /&gt;
&lt;br /&gt;
Sind wie die DS1821 1-wire-Sensoren mit zusätzlicher Logging-Funktion.&lt;br /&gt;
Im iButton-Gehäuse befindet sich eine Lithium-Zelle, eine RTC, CMOS-RAM und der Temp-Sensor. Nach umfangreicher Progammierung startet der Button seine Mission (Aufzeichnung des Temperaturverlaufs).&lt;br /&gt;
Gibt es auch mit zusätzlicher Feuchtemessung (DS1923).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TSic ===&lt;br /&gt;
&lt;br /&gt;
Die TSic Sensoren werden baugleich von 3 Herstellern angeboten:&lt;br /&gt;
* ZMD ([http://www.zmd.biz/temp.php?group=temp&amp;amp;content=products Homepage]) ([http://tarr.uspto.gov/servlet/tarr?regser=serial&amp;amp;entry=78673282 Trademark])&lt;br /&gt;
* IST AG ([http://www.ist-ag.com/eh/ist-ag/de/home.nsf/contentview/8F5D32432CAC53C2C1257405003C2433 Homepage])&lt;br /&gt;
* Hygrosens ([http://www.hygrosens.de/english/shop/list.html?tx_ttproducts_pi1%5Bcat%5D=11&amp;amp;cHash=dcd89b823b Homepage])&lt;br /&gt;
&lt;br /&gt;
Die TSic Sensoren ([http://www.zmd.biz/pdf/ZMD%20TSic%20Data%20Sheet%20V3%207.pdf Datenblatt]) geben ihre Temperaturmessdaten automatisch in einem festen Intervall aus. Daher muss der Host nur warten bis die nächsten Messdaten rausgeschickt werden. Die TSic Sensoren die es im freien Handel gibt, geben ihre Messdaten alle 100ms (10Hz) aus. &lt;br /&gt;
Zur Übertragung wird das [http://www.zmd.biz/pdf/IST_TSic_ZACwire_V2.3%20Digital%20Output_17-Oct-06.pdf ZACwire] Protokoll benutzt. Es handelt sich um eine einfach zwei Byte Übertragung per Manchester-Code. Diese zwei Byte repräsentieren den digital gewandelten Temperaturwert. Im Gegensatz zu Sensoren wie den DS18xxx von Dallas muss dieser Wert aber erst auf einen dezimalen Wert umgerechnet werden. &lt;br /&gt;
Die Sensoren kommen mit 3 Pins aus (VCC, GND, Dout).&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Bereits kalibriert&lt;br /&gt;
* Verschiedene Genauigkeiten lieferbar&lt;br /&gt;
* Sehr einfaches Kommunikationsprotokoll&lt;br /&gt;
* Geringer Stromverbrauch&lt;br /&gt;
* Hochgenau: bis zu +/- 0.1°C (TSic 50x)&lt;br /&gt;
&lt;br /&gt;
Nachteil:&lt;br /&gt;
* Recht teuer (Reichelt: 4,70&amp;amp;euro; für den TSic206)&lt;br /&gt;
* Nur ein Sensor an einem I/O nutzbar (Kein Bussystem)&lt;br /&gt;
&lt;br /&gt;
Achtung! &lt;br /&gt;
Die TSic Sensoren gibt es auch als Version mit analog Ausgang. Bei der Typenbezeichnung gibt die 3. Stelle an ob es sich um die analog- oder Digitalversion handelt (1 = analog, 6 = digital). &lt;br /&gt;
Der TSic201 ist also analog, wärend der TSic206 ein digitaler ist.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/45573#347765 Ansatz zum Empfang der Daten]&lt;br /&gt;
* [http://ethersex.de/index.php/Zacwire Fertige Ansteuerung in Ethersex]&lt;br /&gt;
* [http://www.zmd.biz/temp.php?group=temp&amp;amp;content=products Herstellerseite mit Datenblättern und FAQ]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/82087 Diskussion mit Beispielcode (MSP430, AVR, PIC)]&lt;br /&gt;
* [http://www.mikrocontroller.net/search?query=tsic* Suche in den Foren]&lt;br /&gt;
&lt;br /&gt;
=== SHT1x/SHT7x ===&lt;br /&gt;
&lt;br /&gt;
Der SHT1x/SHT7x (SHT10, SHT11, SHT15, STH71, SHT75) sind kombinierte Temperatur- und Feuchtesensoren von [http://www.sensirion.com Sensirion]. Sie unterscheiden sich in Bauform und Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* digitale Schnittstelle mit einfacher [[I²C]]-&#039;&#039;ähnlicher&#039;&#039; Ansteuerung&lt;br /&gt;
* keine Kalibrierung notwendig&lt;br /&gt;
* Beispielcode (C, MC51) auf der Sensirion-Seite verfügbar (relativ leicht portierbar)&lt;br /&gt;
* interne Heizelemente (Funktionsprüfung, &amp;quot;rauhe&amp;quot; Umgebung)&lt;br /&gt;
* Spannungsmonitor (&amp;quot;Battery fail&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* kann nicht am [[I²C]] Bus betrieben werden, theoretisch gleiche Clockleitung möglich, fixe Adresse&lt;br /&gt;
* relativ teuer (Farnell 18,60&amp;amp;euro;)&lt;br /&gt;
&lt;br /&gt;
[[Category:Sensorik]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=41688</id>
		<title>Miniwebserver</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=41688"/>
		<updated>2009-12-27T16:41:05Z</updated>

		<summary type="html">&lt;p&gt;Robberknight: ethersex hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Winzig kleine Webserver =&lt;br /&gt;
In diesem Artikel möchte ich Informationen über alle Geräte sammeln, die folgende Eigenschaften besitzen:&lt;br /&gt;
*Ethernetanschluss (Buchse oder Anschlusspins für eine Buchse)&lt;br /&gt;
*Webseiten ausliefern&lt;br /&gt;
*Sehr kleine Abmessungen&lt;br /&gt;
&lt;br /&gt;
Keine Voraussetzung ist:&lt;br /&gt;
*Programme ausführen&lt;br /&gt;
*Weitere Anschlussmöglichkeiten&lt;br /&gt;
*Mailserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kandidaten ==&lt;br /&gt;
&lt;br /&gt;
===XPort (ab 65 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Webseiten, aber nur abrufbar, keine serverseitigen Programme&lt;br /&gt;
*3 I/O Ports direkt ansprechbar per UDP und TCP&lt;br /&gt;
*RS232-Schnittstelle&lt;br /&gt;
&lt;br /&gt;
===Picotux (ab 100 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
&lt;br /&gt;
===Etherrape (Bausatz 59 Euro)===&lt;br /&gt;
&lt;br /&gt;
* Kleinster Miniwebserver ohne SMD Teile, leider nicht ganz so winzig (100x80mm)&lt;br /&gt;
&lt;br /&gt;
*[http://www.lochraster.org/etherrape Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Bausatz mit Platine&lt;br /&gt;
* Gehäuse als Zubehör erhältlich&lt;br /&gt;
* Atmega 644, ENC28J60, 2MByte DataFlash&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Weitere Anwendungen auf der Platine&lt;br /&gt;
** RS232&lt;br /&gt;
** RS485&lt;br /&gt;
** Dalls OneWire(TM) Bus&lt;br /&gt;
** Webcam Anschluss&lt;br /&gt;
** Senden und empfangen von IR Fenbedienungssignalen&lt;br /&gt;
** Integration des ELV FS20 Systems in der Firmware vorbereitet&lt;br /&gt;
** Alle Signale des Atmel auf Wannenstecker herausgeführt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===AVR-Board mit Ethernet (ca. 30 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Miniwebserver ohne SMD Teile&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Atmega 32, ENC28J60&lt;br /&gt;
* RS232&lt;br /&gt;
* Alle freien Ports sind nach außen gelegt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===FOX Board (139 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://elmicro.com/de/foxboard.html Elektronikladen.de]&lt;br /&gt;
*[http://www.acmesystems.it Hersteller]&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Axis ETRAX LX100 Multi Chip Module&lt;br /&gt;
*32 Bit RISC CPU, 100MHz Takt, MMU, 8KB Cache&lt;br /&gt;
*4 MB Flash, 16 MB SDRAM&lt;br /&gt;
*10/100 Mbps Ethernet Port (RJ45-Buchse)&lt;br /&gt;
*2x USB-Port (Full-Speed Host)&lt;br /&gt;
*RS232-Port (TTL-Pegel) und I2C&lt;br /&gt;
*IDE, SCSI oder Wide-SCSI&lt;br /&gt;
*zwei Stiftleisten mit je 2x20 Pins&lt;br /&gt;
*3,3V-IOs, 5V-tolerant&lt;br /&gt;
*Versorgung: 5V=, ca. 280mA&lt;br /&gt;
*Abmessungen: 66mm x 72mm&lt;br /&gt;
*Ready-to-run Embedded Linux System (Kernel 2.6)&lt;br /&gt;
*Standardanwendungen: HTTP (Web-Server), FTP, Telnet, DHCP, SSH, PPP...&lt;br /&gt;
*Firmwareupdates jederzeit einfach via LAN-SDK, FTP-Client oder Web-Browser!&lt;br /&gt;
&lt;br /&gt;
=== ADDS-BF533-STAMP Blackfin Eval-Board (136.50 Euro excl. z.b bei Farnell) ===&lt;br /&gt;
&lt;br /&gt;
*ADSP-BF533 500 MHz Blackfin®-Prozessor&lt;br /&gt;
*128 MB SDRAM (64M x 16)&lt;br /&gt;
*4 MB FLASH-Speicher&lt;br /&gt;
*Ethernet-Controller SMSC 91C111&lt;br /&gt;
*serielle RS232-Schnittstelle&lt;br /&gt;
*E/A-Erweiterungsanschlüsse für Blackfin-Peripherie&lt;br /&gt;
**PPI&lt;br /&gt;
**SPORT0 &amp;amp; SPORT1&lt;br /&gt;
**SPI&lt;br /&gt;
**Timer&lt;br /&gt;
**IrDA&lt;br /&gt;
**2-Leiter-Schnittstelle&lt;br /&gt;
*JTAG-Schnittstelle für Fehlersuche und FLASH-Programmierung&lt;br /&gt;
*LEDs (3) und Taster (3)&lt;br /&gt;
*Netzteil&lt;br /&gt;
*fertiger ucLinux-Port :)&lt;br /&gt;
&lt;br /&gt;
=== ezTCP-Module (ab ca. 40 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://www.eztcp.com/en/index_en.html Hersteller-Seite]&lt;br /&gt;
*[http://elmicro.com/de/eztcp.html Elektronikladen.de]&lt;br /&gt;
&lt;br /&gt;
*kleine Platine&lt;br /&gt;
*AVR ATmega* ist drauf&lt;br /&gt;
*RTL Netzwerkchip is drauf&lt;br /&gt;
*verschiedene Ausführungen: ezl-50 ist die kleinste / billigste&lt;br /&gt;
&lt;br /&gt;
=== AVR Net-IO Bausatz von Pollin (19,95 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [[AVR Net-IO Bausatz von Pollin]]&lt;br /&gt;
* Mitgelieferte Software muss durch eine andere Software ersetzt werden (diverse freie Software funktioniert)&lt;br /&gt;
&lt;br /&gt;
=== Weitere Webserver ===&lt;br /&gt;
&lt;br /&gt;
* [[Avr Webserver mit Wiznet WIZ810MJ]]&lt;br /&gt;
* [[Einfacher und billiger Webserver mit AtMega32]]&lt;br /&gt;
&lt;br /&gt;
== private Projekte ==&lt;br /&gt;
===avrETH1===&lt;br /&gt;
*winzige Maße: 32mm x 47.8mm x ~20mm (BxLxH)&lt;br /&gt;
*Microchip ENC28J60 Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 uC&lt;br /&gt;
*4MBit Atmel SPI Flash&lt;br /&gt;
*Webcam Support&lt;br /&gt;
*Temperaturlogger mit Ausgabe als Graph&lt;br /&gt;
*Stromversorgung über die freien Leitungen im Ethernet Kabel oder extern&lt;br /&gt;
&lt;br /&gt;
http://avr.auctionant.de/avrETH1/&lt;br /&gt;
&lt;br /&gt;
===ENC28J60 IO-Webserver===&lt;br /&gt;
*Platine: 74.9mm x 74.9mm&lt;br /&gt;
*Microchip ENC28J60 Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 oder Atmega644 uC&lt;br /&gt;
*Softwarekompatibel zum AVR Net-IO von Pollin&lt;br /&gt;
*Div. Erweiterungsboards&lt;br /&gt;
&lt;br /&gt;
http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver&lt;br /&gt;
&lt;br /&gt;
===mega-eth===&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28J60&lt;br /&gt;
*SD/MMC-Slot&lt;br /&gt;
*FTDI USB/RS232-Wandler&lt;br /&gt;
*ATmega128 mit 64kBytes SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*eigener TCP/IP und TCP/UDP Stack&lt;br /&gt;
*eigener HTTP-Server&lt;br /&gt;
*eigener DHCP-Client&lt;br /&gt;
*Uhr-Synchronisation mit Zeit-Server&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/100177&lt;br /&gt;
&lt;br /&gt;
===MicroWebServer===&lt;br /&gt;
Kleinst-Webserver mit ENC28J60, Mega168 und Pfostenleiste für GPIOs auf 38x31mm².&lt;br /&gt;
&lt;br /&gt;
http://de.klinkerstein.m-faq.de/index.php/MicroWebServer&lt;br /&gt;
&lt;br /&gt;
===I/O===&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-402627.html&lt;br /&gt;
&lt;br /&gt;
===OpenMCP===&lt;br /&gt;
&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28j60&lt;br /&gt;
*ATmega2561 mit 128kByte SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*Eigener TCP/IP-Stack mit TCP,UDP,ARP,ICMP. Socketbasiert, mehrere Verbindungen gleichzeitig möglich&lt;br /&gt;
*HTTP-Server mit CGI-Support&lt;br /&gt;
*SNTP, DHCP, DNS, Telnet, Twitter, DynDNS&lt;br /&gt;
*MP3-Streamingclient (VS10xx) (nur auf dem OpenMCP-Board)&lt;br /&gt;
*Einfache Programmierung, halbwegs gute Dokumentation, komplett GPL, Weiterentwicklung des [https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet CCCB-Boards]&lt;br /&gt;
*Läuft auch auf dem AVR-NETIO und dem myAVR&lt;br /&gt;
&lt;br /&gt;
http://wiki.neo-guerillaz.de&lt;br /&gt;
&lt;br /&gt;
===Ethersex===&lt;br /&gt;
&lt;br /&gt;
*reines Firmware-Projekt&lt;br /&gt;
*läuft auf vielen verschiedenen AVR-Boards (u.a. Etherrape, AVR Net-IO,...)&lt;br /&gt;
*über Konfigurationsdateien leicht an eigene AVR-Boards anzupassen&lt;br /&gt;
*Anbindung über Ethernet (ENC28j60), Funk (RFM12), USB (Soft-Stack), USART&lt;br /&gt;
*TCP/IP, IPv4, IPv6, ZBUS (TCP/IP über RS232 oder RS485)&lt;br /&gt;
*IP-Routing zwischen den verschiedenen Schnittstellen&lt;br /&gt;
*OpenVPN&lt;br /&gt;
*Steuerung &amp;amp; Skripting über Ethersex Command (ECMD)&lt;br /&gt;
*Fertige Ansteuerung vieler gängiger Hardware (I2C, Onewire, LCDs, ADC, FS20,MMC/SD-Karten,...)&lt;br /&gt;
*ICMP,BOOTP,SMTP,NTP,DNS,IRC,Jabber/XMPP,HTTP,...&lt;br /&gt;
*GPLv3, Aktive Entwicklergemeinde&lt;br /&gt;
&lt;br /&gt;
http://ethersex.de/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Ethernet]]&lt;/div&gt;</summary>
		<author><name>Robberknight</name></author>
	</entry>
</feed>