Forum: Mikrocontroller und Digitale Elektronik IR Signal Oszi Bild in Hex Zahl übersetzen


von Philipp T. (phitho)


Angehängte Dateien:

Lesenswert?

Hi,
die fotos zeigen das IR signal der Taste "ON" von der klassichen billig 
led Fernbedienung aus China mit NEC Protokol.
Wie die aus dem Link nur in klein
http://hackaday.com/2012/05/10/reverse-engineering-an-rgb-led-remote/
Ich verstehe die Übersetzung von binär in Hexadezimal nicht, zumindest 
kommt irgend etwas anderes heraus.

Für mich sieht das Signal so aus:
Bild adress
0000 0001 1111 1110
lsb   msb lsb   msb

0x08      0xF7

Bild command
1011 0000 0100 1111
lsb   msb lsb   msb

0xD0      0x2F


Taste "On":
adress  = 0x08
command = 0xD0
?
Als Programm nutze ich grad das Moodlight (Beitrag "noch ein AVR 
Moodlight") in dem der IRMP Code drin ist. Code sollte ja funktionieren.


/* remote control address and command codes */

#define MY_PROTO    IRMP_NEC_PROTOCOL /* IR protocol and */
#define MY_REMOTE    0x08             /* system code */

#define KEY_OPERATE 0xD0              /* on/off */

und als Input Bit:

#define IRMP_BIT                       4       // use PD4 as IR input on 
AVR
#define input(x)        ((x) & (1 << IRMP_BIT))

tut sich aber nix?
Viele Grüße
Philipp

von Sven B. (scummos)


Lesenswert?

LSB = Least Significant Byte und was du da hast ist kein Byte sondern 
nur 4 Bits? Aber das nur nebenbei ;)

Hast du mal versucht die Bit-Reihenfolge komplett umzudrehen?

von Philipp T. (phitho)


Lesenswert?

Meinst du mit umgedreht gespiegelt?

Bild adress
0000 0001 1111 1110

umgedreht:
1000 0000 0111 1111
0x10      0xEF

Bild command
1011 0000 0100 1111

umgedreht:
0000 1101 1111 0010
0x0B      0xF4


adress  = 0x10
command = 0x0B
geht aucht nicht oder meinst du mit umgedreht invertiert?

invertiert:
adress:
1111 1110 0000 0001
0xF7      0x08

command:
0100 1111 1011 0000
0x2F      0xD0

adress  = 0xF7
command = 0x2F
geht aucht nicht?
zähle ich falsch?

von Sven B. (scummos)


Lesenswert?

Ich meine eigentlich dass du die Bits von hinten anfängst zu lesen, 
könnte es daran liegen?

von Philipp T. (phitho)


Lesenswert?

so von hinten angefangen zu zählen:

Bild adress
0000 0001 1111 1110
0x01      0xFE

Bild command
1011 0000 0100 1111
0xB0      0x4F

adress : 0x01fe
command: 0xb04f

funktioniert auch nicht.
ich weiß auch nich mehr weiter..
Wenn man in den link oben von hackaday klickt und dann auf den ersten 
link, findet man auch ein Oszi Bild mit dem Code von der Taste "Rot" 
übersetzt mit 1A, nachvollziehen konnte ich das nicht wie aus:
1010 0010 =
0x1A wird?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Philipp Tholey schrieb:
> die fotos zeigen das IR signal der Taste "ON" von der klassichen billig
> led Fernbedienung aus China mit NEC Protokol.

> Für mich sieht das Signal so aus:
> Bild adress
> 0000 0001 1111 1110

Das sieht erstmal gut aus, meist sind die zweiten 8 Bit beim 
NEC-Protokoll invertiert - im Gegensatz zu NEC-Extended.

Damit ergibt sich als Extended-Adresse: 807F, denn mit LSB-Reihenfolge 
ergibt sich:

  0000 0001 1111 1110
  --------- ---------
      80       7F

IRMP benutzt prinzipiell bei NEC die allgemeinere Extended-Adresse, also 
beide Bytes. So kann IRMP das normale und das extended NEC-Protokoll 
eindeutig identifizieren (und auch per IRSND wieder reproduzieren).

> Bild command
> 1011 0000 0100 1111
> lsb   msb lsb   msb
>
> 0xD0      0x2F

Ich lese das als:

  1011 0000 0100 1111
  --------- ---------
      0D       F2

Also:

Adresse: 0x807F
Command: 0x0DF2

> #define IRMP_BIT                       4       // use PD4 as IR input on

Und IRMP_PORT?

(Mittlerweile sieht das in neueren IRMP-Versionen anders aus)

> tut sich aber nix?

Du könntest das Ergebnis von irmp_get_data() auch auf dem UART oder 
einem Display ausgeben. Oder anfangs anlernen und dann im EEPROM 
speichern. Dann kann Dir das konkrete Ergebnis (Addresse + Kommando) 
egal sein.

P.S.
Ich wundere mich ein wenig über diese Adresse. Die China-LED-FBs, die 
ich habe, benutzen eigentlich FF00 als NEC-Adresse.


EDIT: Ich habe mich oben vertan, man muss bei der Adresse immer 16 Bit 
zusammen als LSB lesen und nicht in 8 bit Gruppen. Das Kommando jedoch 
ist immer 8 Bit breit, denn die letzte 8-Bit-Gruppe ist nur das 
invertierte Kommando - als Checksum.

Dann ergibt sich:

Adresse: 0x7F80
Command: 0x0D

von gvs (Gast)


Lesenswert?

Wie oft willst das Fass jetzt noch aufmachen ?

Beitrag "IRMP Fernbedienung verstehen"

von Philipp T. (phitho)


Lesenswert?

Danke an Frank M. ! schon gehen alle Tasten :)

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.