Wie funktioniert dieser IR-Code?

OP #1137263
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Aufzeichnung eines IR-Codes von einen Panasonic Fernseher 
angehängt. Um RC5 handelt es sich dabei wohl nicht. Kann mir jemand 
eventuell dabei weiterhelfen den genauer zu verstehen? Mich interessiert 
dabei eigentlich nicht was genau da übertragen wird, sonder nur wie der 
Code technisch aufgebaut ist, damit ich zumindest einfacher einzelne 
Codes wiedererkennen kann.
Bisher kann ich eigentlich nur sagen das jeder Code mit diesem großen 
Block beginnt. Kenn jemand dieses Format?

viele Grüße

Aike
#1139003
Lesenswert?
• ▲
▼
Hier ist mein Sendecode. Übergeben wird nur der 10-Bittige Datenteil, 
Hersteller- und Gerätekennungen sind fix. Bei mir ists ein Denon 
DRA-700AE.
1
//Makros
2
#define IR_LED_ON()            DDRD |= (1<<PD7)
3
#define IR_LED_OFF()          DDRD &= ~(1<<PD7)
4

5
void IRInit(void){
6
  TCCR2A |= (1<<WGM21);    //CTC
7
  TCCR2A |= (1<<COM2A0);    //Toggle OC2 on compare match
8
  TCCR2B |= (1<<CS20);    //Voller CPU-Takt
9
}
10

11
void JAPAN(uint16_t data){
12
  //Modulationsfrequenz: 38kHz
13
  OCR2A = 104;
14
  
15
  //Sequenzvariable
16
  uint8_t sequenz[6];
17
  sequenz[0] = 84;                  //Erstes Herstellerbyte
18
  sequenz[1] = 50;                  //Zweites Herstellerbyte
19
  sequenz[2] = 112;                  //Paritynibble der Herstellerbytes und erstes Genrenibble
20
  sequenz[3] = 6 | (data << 4);            //Zweites Genrenibble und ersten vier Datenbits
21
  sequenz[4] = (data >> 4) | (0 << 6);        //Letzten sechs Datenbits und beide ID-Bits
22
  sequenz[5] = sequenz[2] ^ sequenz[3] ^ sequenz[4];  //Paritybyte
23

24
  //Start
25
  IR_LED_ON(); _delay_us(3454); IR_LED_OFF(); _delay_us(1654);
26
  
27
  //Datensequenz
28
  for(uint8_t i=0; i<6; i++){
29
    uint8_t temp_sequenz = sequenz[i];
30
    
31
    for(uint8_t j=0; j<8; j++){
32
      IR_LED_ON();
33
      _delay_us(465);
34
      
35
      IR_LED_OFF();
36
      _delay_us(394);
37
      
38
      if(temp_sequenz & 1)
39
        _delay_us(789);
40
      
41
      temp_sequenz >>= 1;
42
    }
43
  }
44

45
  //Stop
46
  IR_LED_ON(); _delay_us(474); IR_LED_OFF(); _delay_us(74755UL);
47
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.