www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie funktioniert dieser IR-Code?


Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

schau mal ob Du hier was passendes findest:
http://www.sbprojects.com/knowledge/ir/ir.htm

Autor: Aike T. (biertrinker)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anhang...

Autor: TB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn des end signal net fehlen würde würde ich auf sparcinc tippen

Autor: Frankl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht kannst Du damit etwas anfangen.

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, durchaus, das sieht recht hilfreich aus, vielen Dank!

Autor: Sven S. (schwerminator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich richtig gezählt habe, könnte das der Japan- oder auch 
Kaseikyo-Code sein.

Siehe: 
http://www.ktet.fh-muenster.de/Download/Diplomarbe... 
(Seite 17)

Allerdings war bei meinem Gerät die Modulationsfrequenz nicht 56kHz, wie 
in der Arbeit angegeben, sondern 38kHz, muss man dann mit dem 
Oszilloskop schauen.

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sven,

ja, ich denke du hast richtig gezählt. Das scheint er zu sein. Das hilft 
mir alles schon ein gutes Stück weiter. Jetzt muss ich den erstmal 
implementieren.

vielen Dank und viele Grüße

Aike

Autor: Sven S. (schwerminator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine C-Implementierung. Die arbeitet zwar mit delays, aber wenn 
du sie brauchst, schrei einfach.

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
für Senden oder Empfangen? Den Empfangsteil bekomme ich für meine Zwecke 
schon ganz gut hin, ich brauche quasi nur bis auf die Bit-Ebene zu 
kommen, weiteres Dekodieren brauch ich nicht.
Was mir jetzt noch fehlt ist das senden, da habe ich noch so meine 
schwierigkeiten mit.

Autor: Sven S. (schwerminator)
Datum:

Bewertung
0 lesenswert
nicht 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.
//Makros
#define IR_LED_ON()            DDRD |= (1<<PD7)
#define IR_LED_OFF()          DDRD &= ~(1<<PD7)

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

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

  //Start
  IR_LED_ON(); _delay_us(3454); IR_LED_OFF(); _delay_us(1654);
  
  //Datensequenz
  for(uint8_t i=0; i<6; i++){
    uint8_t temp_sequenz = sequenz[i];
    
    for(uint8_t j=0; j<8; j++){
      IR_LED_ON();
      _delay_us(465);
      
      IR_LED_OFF();
      _delay_us(394);
      
      if(temp_sequenz & 1)
        _delay_us(789);
      
      temp_sequenz >>= 1;
    }
  }

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

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, das sollte bei mir so eigentlich passen, vielen Dank!

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so, erzeugst du die kurzen 36 khz Pulse extern?

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, quatsch, habs schon selbst gesehen, das machst du über den OC2 Pin, 
alles klar.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.