RC5 und ATMEGA168

Gast #404207
Lesenswert?

Hallo,

ich versuche mit einem ATMEGA168 und einem SFH 5110-36 IR-Empfänger RC5
Signale zu decodieren. Ich habe mich an das Code-Beispiel von Peter
Danneger gehalten, bekomme aber keine gültigen RC5 Codes. Es werden
zwar Bits empfangen, es sind aber keine gleichen Bit-Muster die bei
mehrmaligen Drücken einer Taste auf der Fernbedienung empfangen werden
(vom Repeat-Bit abgesehen). Der SFH 5110 ist wie im Datenblatt
angegeben mit Kondensator und Widerständen beschaltet um Störungen aus
der Spannungsversorgung zu minimieren.

Die Vermutung liegt nahe, dass das Timer-Intervall nicht stimmt, kann
aber keinen Fehler finden. Der ATMEGA ist extern mit 3.68 MHZ getaktet,
F_CPU ist korrekt eingestellt, serielle Übertragung an den PC
funktioniert auch. Jemand eine Idee oder ein funktionsfähiges
RC5-Beispiel für den ATMEGA88 o. ATMEGA168? Suche schon seit Tagen den
Fehler, komme aber einfach nicht weiter. Hoffe jemand weiss Rat.

Gruß
  Arne
Angehängte Dateien:
Gast #404209
Lesenswert?

Hi,

das CKDIV8 Fuse-Bit ist auf 1 gesetzt. Habe gerade testweise mal das
Bit auf 0 (Divide clock by 8= aktiv) gesetzt, hatte nur zur Folge dass
die ser. Übertragung nicht mehr korrekte Zeichen überträgt.

Arne
Gast #404210
Lesenswert?

die Receive Funktion steht in dem Code Beispiel ausserhalb der
Endlosschleife. Ich habe den PeDa Code auch mal ausprobiert und es hat
sofort geklappt. Da bleibt noch die Standardfrage ob du sicher bist das
auch wirklich RC5 gesendet wird. Ich habe noch eine alte FB von einem
Uralt Philipps CD Player. Oder programmierbare mit voreingestellten
Codes müssten auch gehen.

hier die main loop die ich zum testen benutzt hatte:

<C>
  for(;;)
  {        // main loop
    cli();
    i = rc5_data;      // read two bytes from interrupt !
    rc5_data = 0;
    sei();
    if( i )
    {
      PORTC = ~i;        // LED output
      putchar(( i >> 11 & 1) + '0');  // Toggle Bit
      putchar(' ');
      itoa( i >> 6 & 0x1F, s, 10);  // Device address
      puts( s );
      putchar(' ');
      cmd = (i & 0x3F) | (~i >> 7 & 0x40);
      itoa(cmd, s, 10); // Key Code
      puts( s );
      CheckCmd(cmd);  // Kommando auswerten
      puts( "\n\r" );
    }
    _delay_ms(10.0);
  }
</C>
Gast #404211
Lesenswert?

Hi JojoS,

die Receive Funktion ist mir in dem Code Beispiel in die falsche Zeile
gerutscht, uppps. Im tatsächlichen Code steht der Aufruf aber in der
Endlosschleife, kann daher aber nicht die Ursache sein. Als
Fernbedienung habe ich ne Universal "One for all" benutzt. Kann
vielleicht wirklich sein, dass die bei mir programmierten Geräte keine
RC5 sind, habe aber auch mal ein paar Codes für Philips TV's
verwendet. Teste das gleich sicherheitshalber nochmal...

Arne
Gast #404214
Lesenswert?

hast du den eingang (pind.2 in deinem fall?) tatsächlich auch auf
"eingang" eingestellt? pull-up eingeschaltet?

bei mir fuktioniert der code von peter in einem mega8 und in einem
mega48 einwandfrei.

auch die korrekten defines nicht fergessen:

#define  xRC5_IN    PIND
#define  xRC5    2      // IR input low active
#define  XTAL    3.68e6
#define RC5TIME   1.778e-3    // 1.778msec
#define PULSE_MIN  (XTAL / 512  RC5TIME  0.4 + 0.5)
#define PULSE_1_2  (XTAL / 512  RC5TIME  0.8 + 0.5)
#define PULSE_MAX  (XTAL / 512  RC5TIME  1.2 + 0.5)
Gast #404215
Lesenswert?

Hi emil,

der Port ist auf Eingang gestellt:

DDRD &= ~(1<<PD2);
PORTD |= (1<<PD2);

Any Ideas? Habe jetzt so ziemlich alles auspobiert. Gibt es andere
Programmbeispiele zu RC5 als das von Peter Danneger?

Arne
Gast #404216
Lesenswert?

Schau noch mal nach anderen Fernbedienungen. Ich hatte ein ähnliches
Problem und letztendlich lag es daran, dass die FBs einfach gar kein
rc5 gesendet hatten (obwohl Philips draufstand).

Schönen Gruß
Gast #404218
Lesenswert?

Hi,

als Vetcor ist ISR(TIMER0_OVF_vect) angegeben. Steht so in der
AVR-Doku.

Ich glaube das beste ist wenn ich mir einen ATMEGA8 und einen anderen
IR-Empfänger besorge und dort erstmal teste ob der RC5 Empfang
funktioniert. Daten kommen ja an, rc5_tmp ist mit 1 gefüllt, allerdings
wird nie ein gültiger RC5 Code daraus, an der FB kann es auch nicht
liegen, habe 5 verschiedene versucht und auf der Universal-FB alle
Philips Geräte getestet.

Arne

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren