Forum: Mikrocontroller und Digitale Elektronik Datenempfang von Ruwido Merlin-Tastatur mit IRMP


von Quetzalcoatl1906 (Gast)


Lesenswert?

Hallo,

ich bin noch ziemlich neu auf auf dem Gebiet, aber versuche gerade die 
Ruwido-Merlin Tastatur mit IRMP zu dekodieren und über Uart die Tasten 
auszugeben. Habe einen ATMEGA32 und schreibe das Programm mit dem 
Atmel-Studio 6. Als Empfänger habe ich einen TSOP31256 und einen 
externen 16Mhz Kristall am Controller.
Allerdings bekomme ich es nicht hin die gedrückten Tasten zu dekodieren. 
Der Empfänger bekommt aufjedenfall ein Signal, da über die 
Callback-Funktion im IRMP eine Led angesteuert wird. Auch das Senden von 
Strings oder Zahlen per UART an den PC funktioniert.
Mit folgendem Code versuche ich die gedrückten Tasten, bzw. erstmal 
deren Codes zu senden:
1
 int
2
main (void)
3
{
4
    IRMP_DATA irmp_data;
5
6
    irmp_init();                                                            // initialize irmp
7
    timer1_init();                                                          // initialize timer1
8
  uart_init();
9
  char s[16];
10
  LED_DDR |= (1 << LED_PIN);         // LED pin to output
11
  LED_PORT |= (1 << LED_PIN);        // switch LED off (active low)
12
  
13
  irmp_set_callback_ptr (led_callback);
14
  uart_puts("Start");
15
  
16
    sei ();                                                                 // enable interrupts
17
18
    for (;;)
19
    {
20
        if (irmp_get_data (&irmp_data))
21
        {
22
      
23
      
24
      if (irmp_data.protocol == IRMP_RUWIDO_PROTOCOL )                   // Ruwido-Protokoll
25
      {
26
        
27
        //LED_PORT &= ~(1 << LED_PIN);
28
        
29
        itoa( irmp_data.command, s, 10 ); // 10 fuer radix -> Dezimalsystem
30
        uart_puts( s );
31
        
32
      }
33
      
34
        }
35
    }
36
}

Das Ganze ist eigentlich nicht viel mehr als das Standardbeispiel. An 
der irmpconfig.h habe ich nur das Ruwido-Protokoll aktiviert. F_CPU 
steht auf 16000000UL.
Es gibt ja auch noch die Einstellung IRMP_EXT_LOGGING, die wie ich das 
verstanden habe, wenn man sie auf 1 setzt Nullen und Einsen entsprechend 
des Tastencodes per UART verschickt? Davon kommt bei mir leider nichs 
an.
Die Led aus der Callbackfunktion flackert direkt bei jedem Tastendruck, 
mein Sendeversuch aus dem Code oben reagiert nur ab und zu auf eine 
Taste, allerdings mit scheinbar beliebigem Wert.
Hat jemand eine Idee woran das liegen könnte? Bin wie gesagt noch nicht 
lange dabei, falls noch wichtige Informationen fehlen, bitte melden!

Vielen Dank und schöne Grüße,
Quetzalcoatl1906

von W.S. (Gast)


Lesenswert?

Such mal in der Codesammlung. Ich hatte dort vor geraumer Zeit ein PDF 
mit der Beschreibung des Sendeformates gepostet.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.