mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Infrarot senden


Autor: Christelle T. (tchris)
Datum:
Angehängte Dateien:

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

Autor: Gary (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen µC nimmst du... was meinst du mit getoggelten Signal bei High?

Autor: Gary (Gast)
Datum:

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

}

Autor: Gary (Gast)
Datum:

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

Autor: Christelle T. (tchris)
Datum:

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

Autor: Christelle T. (tchris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie mache ich das am besten?

Autor: Gary (Gast)
Datum:

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

Autor: Gary (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens... was verwendest du als "Logicanalyzer" ? Sowas edles konnte
ich mir noch nicht leisten ;)

Autor: Gary (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christelle T. (tchris)
Datum:

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

Autor: Gary (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super! poste doch mal dein Projekt/Code, damit hier andere es
nachvollziehen können.

Autor: Christelle T. (tchris)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Hier der Code, der läuft super gut jetzt. Mein nächstes Problem: Kann
mir jemand vielleicht erklären wie ich die Bitdauer mit einem Timer zB
dem Timer 0 erzeugen kann? anstatt mit der Delay Funktion?
Danke

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.