Auzug aus
https://www.mikrocontroller.net/articles/IRMP#NEC_.2B_extended_NEC
1 | Daten NEC 8 Adress-Bits +
|
2 | 8 invertierte Adress-Bits +
|
3 | 8 Kommando-Bits +
|
4 | 8 invertierte Kommando-Bits
|
Um einen Standard-NEC-Frame eindeutig festzulegen, braucht man lediglich
2 Bytes, nämlich 8 Adress-Bits + 8 Kommando-Bits. Der Rest ist
redundanterweise einfach invertiert, also Byte 2 und Byte 4.
Wenn ich aber im Artikel eine Zeile weiterlese, finde ich:
1 | Daten ext. NEC 16 Adress-Bits
|
2 | 8 Kommando-Bits +
|
3 | 8 invertierte Kommando-Bits
|
Die Lösung dieses vermeintlichen Widerspruches ist einfach:
Irgendwann gingen den Herstellern die 256 maximal möglichen Adressen
aus. Also hat man das Protokoll erweitert ("Extended NEC") und auf die
Forderung, dass das zweite Byte im Frame die negierte 8-Bit-Adresse ist,
verzichtet.
Damit hat man nun bis zu 65536 Adressen. In der Regel ist es aber
trotzdem so, dass meist das zweite Byte das negierte erste Byte ist.
Aber es ist nicht zwingend. Und damit sind nun Geräteadressen von
0x000 bis 0xFFFF möglich.
Aus diesem Grund gibt IRMP eine vollständige 16 Bit-Adresse zurück und
einen 8-Bit Kommando-Code. Letzterer geht also lediglich nur von 0x00
bis 0xFF.
Mit 2 Byte Adressen und 1 Byte Kommando-Code sind nun sowohl NEC als
auch Extended NEC eindeutig spezifiziert.
EDIT:
Okay, ich hätte im IRMP daraus auch zwei Protokolle machen können, wie
z.B. NEC und EXT_NEC. Da die technischen Merkmale sich aber nur in
diesem einen Punkt unterscheiden, behandle ich beide als "Extended NEC".
Damit der Frame von der Identifikation her eindeutig ist und auch von
IRSND eindeutig reproduziert werden kann, war die Erweiterung auf 16 Bit
für die Geräteadresse die logische Konsequenz - so wie es auch die
Hersteller gemacht haben.
IRMP behandelt also alle NEC-Frames als Extended-NEC-Protokoll. Denn das
Extended-NEC-Protokoll ist einfach eine Obermenge von Standard-NEC.
Nachlesen kannst Du das im Detail auch auf:
https://www.sbprojects.net/knowledge/ir/nec.php