<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2001%3A638%3AA00%3AF011%3A240%3AF4FF%3AFEB4%3AEA2D</id>
		<title>Ethersex_Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2001%3A638%3AA00%3AF011%3A240%3AF4FF%3AFEB4%3AEA2D"/>
		<link rel="alternate" type="text/html" href="http://www.ethersex.de/index.php/Special:Contributions/2001:638:A00:F011:240:F4FF:FEB4:EA2D"/>
		<updated>2026-05-25T06:52:00Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.ethersex.de/index.php?title=IRMP_(Deutsch)&amp;diff=74</id>
		<title>IRMP (Deutsch)</title>
		<link rel="alternate" type="text/html" href="http://www.ethersex.de/index.php?title=IRMP_(Deutsch)&amp;diff=74"/>
				<updated>2011-10-05T19:33:18Z</updated>
		
		<summary type="html">&lt;p&gt;2001:638:A00:F011:240:F4FF:FEB4:EA2D: /* Senden von IR-Zeichen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{i18n|IRMP}}&lt;br /&gt;
{{Module&lt;br /&gt;
|NAME=IRMP&lt;br /&gt;
|MENUCONFIG={{I/O}}-&amp;gt;IR-&amp;gt;IRMP&lt;br /&gt;
|STATUS={{stable}}&lt;br /&gt;
|PINNING=yes&lt;br /&gt;
|ECMD={{has_ecmd}}&lt;br /&gt;
|CONTROL6={{has_control6}}&lt;br /&gt;
|DEPENDS=[[ECMD]]&lt;br /&gt;
|REQUIRES= -&lt;br /&gt;
|CODE=[https://github.com/ethersex/ethersex/tree/master/hardware/ir/irmp https://github.com/ethersex/ethersex/tree/master/hardware/ir/irmp]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
IRMP ist eine Portierung des [http://www.mikrocontroller.net/articles/IRMP Infrarot-Multiprotokoll-Decoders] nach [[Ethersex]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anschluss ==&lt;br /&gt;
&lt;br /&gt;
Der Empfang der IR-Signale erfolgt durch einen Empfänger vom Typ TSOP1736 (oder ähnlich). Dieser kann an einem beliebigen Pin angeschlossen werden. Die Abfrage des Pins und die Dekodierung des IR-Protokolls erfolgt in einer ISR, die einen 8-Bit-Timer des ATMEGAs belegt.&lt;br /&gt;
&lt;br /&gt;
Beim Senden wird das Signal mit der Trägerfrequenz des jeweiligen IR-Protokolls über [[PWM_(Deutsch)|PWM]] moduliert. Dazu wird ein weiterer 8-Bit Timer des ATMEGAs (OC0/OC2) belegt. Auf dem '''[[Etherape_(Deutsch)|Etherrape]]'''-Board übernimmt ein [[NE555_(Deutsch)|NE555]] diese Funktion, d.h. die Option ''Use external modulator for sender'' ist zu aktivieren. Man spart einen Timer des [[AVR_(Deutsch)|AVR]] und ist auf eine Trägerfrequenz festgelegt.&lt;br /&gt;
&lt;br /&gt;
Beispiel für einen ATMega32 aus: ''pinning/hardware/pollin_evalboard_addon.m4''&lt;br /&gt;
&lt;br /&gt;
  ifdef(`conf_IRMP', `dnl&lt;br /&gt;
    pin(IRMP_RX, PD2)&lt;br /&gt;
  #define IRMP_USE_TIMER2&lt;br /&gt;
  #define IRMP_RX_LOW_ACTIVE&lt;br /&gt;
  #undef IRMP_RX_LED_LOW_ACTIVE&lt;br /&gt;
    pin(IRMP_TX, PD7) dnl OC2/OC2A&lt;br /&gt;
  #undef IRMP_TX_LED_LOW_ACTIVE&lt;br /&gt;
  ')&lt;br /&gt;
&lt;br /&gt;
Bedeutung:&lt;br /&gt;
&lt;br /&gt;
* IRMP_RX - Pin an dem der IR-Empfänger angeschlossen ist&lt;br /&gt;
* IRMP_USE_TIMER2 - benutze Timer2 für den Empfang, Timer0 für das Senden (undef = umgekehrt)&lt;br /&gt;
* IRMP_RX_LOW_ACTIVE - der IR-Empfänger ist Low-Akriv (undef = High-aktiv)&lt;br /&gt;
* IRMP_RX_LED_LOW_ACTIVE - die Kontroll-LED des Empfängers ist gegen USS geschaltet (undef = gegen GND geschaltet)&lt;br /&gt;
* IRMP_TX - Pin an dem der IR-Sender angschlossen ist (=Ausgang des Timer0 oder Timer2, vgl. IRMP_USE_TIMER2)&amp;lt;br&amp;gt;'''Achtung: 0A bzw 2A bei MCU mit A/B Kanal'''&lt;br /&gt;
* IRMP_TX_LED_LOW_ACTIVE - die Kontroll-LED des Senders ist gegen USS geschaltet (undef = gegen GND geschaltet)&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Jedes unterstützte IR-Protokoll &amp;quot;verbrät&amp;quot; Speicher an Code. Deshalb sollte man nur die benötigten Protokolle auswählen. Eine detailierte Übersicht über die Protokolle gibt der [http://www.mikrocontroller.net/articles/IRMP#Die_IR-Protokolle_im_Detail Artikel im Mikrocontroller Forum].&lt;br /&gt;
&lt;br /&gt;
  │ │          Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
  │ │          General Setup  ---&amp;gt;&lt;br /&gt;
  │ │              [*] Status LEDs  ---&amp;gt;&lt;br /&gt;
  │ │                  [*] Status LED (Received)&lt;br /&gt;
  │ │                  [-]    RFM12 RX&lt;br /&gt;
  │ │                  [ ]    ZBUS RX&lt;br /&gt;
  │ │                  [*]    IRMP RX&lt;br /&gt;
  ...&lt;br /&gt;
  │ │          Network ---&amp;gt;&lt;br /&gt;
  │ │          I/O ---&amp;gt; &lt;br /&gt;
  ...&lt;br /&gt;
  │ │              [*] IR Receivers ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                  [ ] RC5 IR  ---&amp;gt;&lt;br /&gt;
  │ │                  [*] IRMP IR ---&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  │ │                      [*] Receive IR-codes&lt;br /&gt;
  │ │                      [*] Send IR-codes&lt;br /&gt;
  │ │                      [ ] Use external modulator for sender&lt;br /&gt;
  │ │                      [*] IRMP ecmd&lt;br /&gt;
  │ │                      --- Protocols&lt;br /&gt;
  │ │                      [ ] SIRCS&lt;br /&gt;
  │ │                      [*] NEC&lt;br /&gt;
  │ │                      [ ] NEC16&lt;br /&gt;
  │ │                      [ ] NEC42&lt;br /&gt;
  │ │                      [ ] JVC&lt;br /&gt;
  │ │                      [ ] SAMSUNG&lt;br /&gt;
  │ │                      [ ] MATSUSHITA&lt;br /&gt;
  │ │                      [ ] KASEIKYO&lt;br /&gt;
  │ │                      [*] DENON&lt;br /&gt;
  │ │                      [ ] RECS80&lt;br /&gt;
  │ │                      [ ] RECS80EXT&lt;br /&gt;
  │ │                      [*] RC5(X)&lt;br /&gt;
  │ │                      [ ] RC6&lt;br /&gt;
  │ │                      [ ] NUBERT&lt;br /&gt;
  │ │                      [*] BANG&amp;amp;OLUFSEN&lt;br /&gt;
  │ │                      [*] GRUNDIG&lt;br /&gt;
  │ │                      [ ] NOKIA&lt;br /&gt;
  │ │                      [*] SIEMENS&lt;br /&gt;
  │ │                      [ ] FDC&lt;br /&gt;
  │ │                      [ ] RCCAR&lt;br /&gt;
  │ │                      [ ] NIKON&lt;br /&gt;
  │ │                      [ ] RUWIDO&lt;br /&gt;
  │ │                      [ ] IR60&lt;br /&gt;
  │ │                      [ ] KATHREIN&lt;br /&gt;
  │ │                      [ ] NETBOX&lt;br /&gt;
  │ │                      [ ] LEGO&lt;br /&gt;
  │ │                      [ ] THOMSON&lt;br /&gt;
  │ │                      --- Debugging Flags&lt;br /&gt;
  │ │                      [ ] IRMP Debug&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IRMP dekodiert auch das RC5-Protokoll, so dass der separat in [[Ethersex_(Deutsch)|Ethersex]] enthaltene [[RC5_(Deutsch)|RC5]]-Dekoder nicht länger benötigt wird.&lt;br /&gt;
&lt;br /&gt;
== [[ECMD_(Deutsch)|ECMD]] ==&lt;br /&gt;
&lt;br /&gt;
IRMP implementiert eine [[ECMD_(Deutsch)|ECMD]] Schnittestelle zum Auslesen empfangener und dekodierter IR-Kommandos und zum Senden von IR-Kommandos. Siehe [[Ecmd_Reference_(Deutsch)|ECMD Referenz]].&lt;br /&gt;
&lt;br /&gt;
== [[Control6]] ==&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe empfangener IR-Zeichen via [[SYSLOG_(Deutsch)|Syslog]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CONTROL_START&lt;br /&gt;
&lt;br /&gt;
THREAD(read_irmp)&lt;br /&gt;
ON IRMP_READ &amp;gt; 0 DO&lt;br /&gt;
  SYSLOG(&amp;quot;IRMP %02hhd:%04hX:%04hX:%02hhX\n&amp;quot;,&lt;br /&gt;
         IRMP_PROTOCOL, IRMP_ADDRESS, IRMP_COMMAND, IRMP_FLAGS);&lt;br /&gt;
END&lt;br /&gt;
THREAD_END(read_irmp)&lt;br /&gt;
&lt;br /&gt;
ON STARTUP DO&lt;br /&gt;
  THREAD_START(read_irmp);&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
CONTROL_END&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit IRMP_READ wird auf empfangenen IR-Code geprüft und dieser in die Variablen IRMP_PROTOCOL, IRMP_ADDRESS, IRMP_COMMAND und IRMP_FLAGS gespeichert. Rückgabewerte größer Null signalisieren die Gültigkeit der Variablen. Bei IRMP_FLAGS=1 handelt es sich um eine Wiederholung.&lt;br /&gt;
&lt;br /&gt;
=== Steuern von [[Stella_Light_(Deutsch)|Stella]]/Pins durch IR-Zeichen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C6_HEADER(`/* This will be in control6.h */')&lt;br /&gt;
#include &amp;quot;services/stella/stella.h&amp;quot;&lt;br /&gt;
CONTROL_START&lt;br /&gt;
 &lt;br /&gt;
THREAD(control_stella)&lt;br /&gt;
ON IRMP_READ &amp;gt; 0 DO&lt;br /&gt;
  if(IRMP_PROTOCOL==8 &amp;amp;&amp;amp; IRMP_ADDRESS==0x0002)&lt;br /&gt;
  {&lt;br /&gt;
    switch(IRMP_COMMAND)&lt;br /&gt;
    {&lt;br /&gt;
       case 0x0268:&lt;br /&gt;
          stella_setValue(STELLA_SET_IMMEDIATELY, 0, 255);&lt;br /&gt;
          break;&lt;br /&gt;
&lt;br /&gt;
       case 0x0068:&lt;br /&gt;
          stella_setValue(STELLA_SET_IMMEDIATELY, 0, 0);&lt;br /&gt;
          break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
END&lt;br /&gt;
THREAD_END(control_stella)&lt;br /&gt;
 &lt;br /&gt;
ON STARTUP DO&lt;br /&gt;
  THREAD_START(control_stella);&lt;br /&gt;
END&lt;br /&gt;
 &lt;br /&gt;
CONTROL_END&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Script schaltet den Stella Channel 0 auf 255 oder auf 0, die Fernbedienung ist hier eine Denon (Protocol 8). Mit ''include'' wurde dem Script der Zugriff auf die Stellasourcen gestattet.&amp;lt;br&amp;gt;&lt;br /&gt;
Statt ''&amp;quot;stella_setValue(STELLA_SET_IMMEDIATELY, 0, 255);&amp;quot;'' kann auch ''&amp;quot;PIN_SET(LED)&amp;quot;'' und ''&amp;quot;PIN_CLEAR(LED)&amp;quot;'' verwendet werden ([[Named_PIN_(Deutsch)|Named PIN]]).&lt;br /&gt;
&lt;br /&gt;
=== Senden von IR-Zeichen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dnl 01 = SIRCS&lt;br /&gt;
dnl 02 = NEC&lt;br /&gt;
dnl 03 = SAMSUNG&lt;br /&gt;
dnl 04 = MATSUSHITA&lt;br /&gt;
dnl 05 = KASEIKYO&lt;br /&gt;
dnl 06 = RECS80&lt;br /&gt;
dnl 07 = RC5(x)&lt;br /&gt;
dnl 08 = DENON&lt;br /&gt;
dnl 09 = RC6&lt;br /&gt;
dnl 10 = SAMSUNG32&lt;br /&gt;
dnl 11 = APPLE&lt;br /&gt;
dnl 12 = RECS80EXT&lt;br /&gt;
dnl 13 = NUBERT&lt;br /&gt;
dnl 14 = BANG&amp;amp;OLUFSEN&lt;br /&gt;
dnl 15 = GRUNDIG&lt;br /&gt;
dnl 16 = NOKIA&lt;br /&gt;
dnl 17 = SIEMENS&lt;br /&gt;
dnl 18 = FDC&lt;br /&gt;
dnl 19 = RCCAR&lt;br /&gt;
dnl 20 = JVC&lt;br /&gt;
dnl 21 = RC6A&lt;br /&gt;
dnl 22 = NIKON&lt;br /&gt;
dnl 23 = RUWIDO    * no tx support yet&lt;br /&gt;
dnl 24 = IR60      * no tx support yet&lt;br /&gt;
dnl 25 = KATHREIN  * no tx support yet&lt;br /&gt;
dnl 26 = NETBOX    * no tx support yet&lt;br /&gt;
dnl 27 = NEC16&lt;br /&gt;
dnl 28 = NEC42&lt;br /&gt;
dnl 29 = LEGO&lt;br /&gt;
dnl 30 = THOMSON   * no tx support yet&lt;br /&gt;
&lt;br /&gt;
IRMP_PROTOCOL = 2;&lt;br /&gt;
IRMP_ADDRESS = 1234;&lt;br /&gt;
IRMP_COMMAND = 5678;&lt;br /&gt;
IRMP_FLAGS = 1;&lt;br /&gt;
&lt;br /&gt;
IRMP_WRITE;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommando 5678 an Gerät 1234 wird mit einer Wiederholung im NEC-Protokoll gesendet.&lt;/div&gt;</summary>
		<author><name>2001:638:A00:F011:240:F4FF:FEB4:EA2D</name></author>	</entry>

	</feed>