Infrarot senden

OP #341500
Lesenswert?

hallo Leute,

Ich weiss, das Thema wurde schon mehrmals hier behandelt... aber ich
komme einfach nicht weiter.
Ich habe Ein Programm geschrieben zum Senden eines Infrarot Signals
mit Timer 1 und CTC. Das läuft nicht so gut, denn mein Empfänger
dekodiert ihn nicht! Mein Logikanlyser zeigt beim High das getoggelte
Signal. Ansonsten sind die Pausen und low ok. Was habe ich beim High
falsch gemacht??? Ich weiss nicht mehr weiter.
Bitte um Hilfe. Danke
Angehängte Dateien:
Gast #341502
Lesenswert?

//Eine 0 oder 1 senden
void Send_Bit(uint8_t code)
{
  if (code==0)
  {
   IR_LED_OFF;
  _delay_us(180); _delay_us(150); // Ein Bit dauert 330 us
   }

  else
  {
    sei();    <<<<<<<<<<<<<<<<<<<<<<<<<<< nach dem SEI ?
  IR_LED_OFF;                           |
  cli();   <<<<<<<<<<<<<<<<< Das sollte |
  }

}
Gast #341503
Lesenswert?

SIGNAL (SIG_OUTPUT_COMPARE1A)
{
  // PinA1 76000 mal in der sek an und ausschalten
  IR_LED_PORT ^= (1 << IR_LED_PIN);
  _delay_us(180); _delay_us(150); // Ein Bit dauert 330 us
}

und ein DELAY im Interrupt-Handler????
OP #341504
Lesenswert?

Hi, Ich habe ein Atmega8515  mit FCPU = 3,686Mhz. Wenn ich 0 sende, wird
nichts getan. Der IR-LEd geht auf low, das ist korrekt. Ich moduliere
das Signal nur wenn ich 1 sende, und dafür toggle ich den Pin-Ausgang.
Ich denke der Empfänger sollte erkennen, dass es moduliert wird und
eine Folge von 1 am Logikanalyser zeigen. Nur bei mir zeigt es eine
Folge von 1 und 0.
Gast #341506
Lesenswert?

Also das ist schon richtig mit der Modulation, aber das glaube ich
funktioniert so mit deinem Programm nicht... wenn du einen Delay in
deinem Interrupt machst, wie soll er dann toggeln?

Hier ein paar Tips/Fragen:
a) IR-Codierung ansehen:
http://de.wikipedia.org/wiki/Fernbedienung#Beispiel_IR-Modulation
b) habe verstanden das du bereits in deiner Empfängerschaltung
   nachmisst... was passiert an deinem Sende-Port, da müsste es schon
   klemmen, wenn ich nicht falsch liege.
c) Wenns da passt, dann frag ich mich gerade wie du die
   Empfängerschaltung aufgebaut hast.. Bandpass-wie dimensoniert usw.

Das wesentliche ist aber a) und b) - wenn dann Theorie passt, dann
weiter.
Viel Erfolg
OP #341509
Lesenswert?

Hallo Gary,
Vielen herzlichen Dank für deine Antworten. Du hattest völlig recht,
ein Delay in der ISR war völlig falsch. Den habe ich jetzt in der Sende
funktion bei High geschrieben und das funktionniert. Also mein Beamer
geht jetzt an und aus, wenn ich auf meiner Taste drücke. Nur manchmal
muss ich halt 2 oder 3 Mal drücken damit er anschaltet. Also die Delay
Zeiten sind nicht sehr genau, aber das kriege ich schon hin. Ich
verwende den 1630G Logic Analyzer der firma hp. Ziemlich alt, aber sehr
effizient.
Nochmal Danke.

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