Hallo RoboHolIC,

das Datenblatt hab ich mir unzählige male durchgeschaut und auch einige Testprogramme probiert, um die "Grenzen" des TSOP auszuloten.
Im Datenblatt steht u.a. "Minimum burst length: 10 cycles/burst" und "After each burst of length a minimum gap time is required of: 10 to 70 cycles, ≥ 10 cycles". Bei einer Trägerfequenz von 36kHz dauert ein cycle rund 27,8 us. Bei meinen angegebenen 500 us komme ich damit auf 18 cycles/burst und liege damit absolut im grünen Bereich.

Beim folgenden Testprogramm macht die Kontroll-LED genau das gleiche, wie die IR-LED (außer natürlich, wenn die optische Verbindung unterbrochen wird, dann bleibt sie aus).

Code:
'===============================================================================
'IR Kanone V 01
'
'IR-LED an Pin 5 (PB0, OCR0A)
'TSOP34836 an Pin 7 (PB2, INT0)
'
'Pin 6 (PB1 Test-LED)
'===============================================================================

$regfile = "attiny45.dat"
$crystal = 8000000                                          'FuseBit CKDIV8 deaktivieren

$hwstack = 40
$swstack = 40
$framesize = 50


'-------------------------------------------------------------------------------------------------
'Timer konfigurieren
'-------------------------------------------------------------------------------------------------

Config Timer0 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1       'Timer0 erzeugt 36kHz IR-Trägerfrequenz, Clear Timer setzt Timer bei Erreichen des Comparewertes auf 0 zurueck
Ocr0a = 110


'-------------------------------------------------------------------------------------------------
'Interrupt-Service-Routinen konfigurieren und freigeben
'-------------------------------------------------------------------------------------------------

Config Int0 = Change                                        'beim Flankenwechsel an PB2/INT0 (Ir_data_in) Int0 auslösen und in die Subroutine springen
Enable Int0
On Int0 Ir_data_in                                          

Enable Interrupts


'-------------------------------------------------------------------------------------------------------------
'Ein- und Ausgang festlegen
'-------------------------------------------------------------------------------------------------------------

Ddrb = &B00010011                                           'PB0, PB1 und PB4 werden Ausgänge, restlicher PortB bleibt Eingang


'======================================================
'Hauptprogramm
'======================================================

Do

Ddrb.0 = 1                                                  ' 36 kHz Carrier on
Waitus 500
Ddrb.0 = 0                                                  ' 36 kHz Carrier off
Waitus 500


'Sendepause einlegen
Ddrb.0 = 0
Wait 2


Loop

End


'-------------------------------------------------------------------------------------------------------------
'ISR IR Daten empfangen
'-------------------------------------------------------------------------------------------------------------

Ir_data_in:
If Pinb.2 = 0 Then
Portb.1 = 1
Else
Portb.1 = 0
End If

Return
Die Zahlen habe ich in einem weiten Bereich getestet. Alles über 300 us wird problemlos übertragen (300 us entspricht ca. 10 cycles/burst und deckt sich somit perfekt mit dem Datenblatt). Auch die Sendepause habe ich von 0 (null) bis mehreren Sekunden getestet. Im Code sind 2 sec angegeben, d.h. die Kontroll-LED blitzt alle 2 sec kurz auf.

Ich bin mir daher sicher, dass es nicht am TSOP oder dem gesendeten IR-Signal liegt, da diese Übertragung problemlos klappt. Es scheitert offensichtlich an der Signalauswertung im Programmcode

mfg
Robert