PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC5 - Es empfängt nicht



DEAF BOY
21.07.2009, 06:40
Hab hier 2x Atmega8, LD 274 bzw. grüne LED als Kontrolle und TSOP1736.
Die Hardware wurde identisch aufgebaut wie auf dem Schaltplan.
http://666kb.com/i/batr8ube5if2cxn6n.gif

Sender

'RC5 senden
$regfile = "m8def.dat"
$crystal = 1000000 'Interner Takt 1 MHz

' +5V <---[A IR-Led K]---[330 Ohm]---> Pb.1(OC1A) for Atmega8

Dim Togbit As Byte , Adresse As Byte , Command As Byte

Command = 12
Adresse = 0
Togbit = 0

Do
Wait 1
Rc5send Togbit , Adresse , Command
Loop
Beim Senden klappt es. Hab grüne LED angeschlossen und es blinkt alle 1 Sekunde.




Empfänger

'RC5 empfangen
$regfile = "m8def.dat"
$crystal = 16000000 'externer Quarzoszillator 16 MHz
$baud = 9600
$lib "mcsbyte.lbx"

'PD.4 (INT0)
Config Rc5 = Pind.4

Enable Interrupts

Dim Adresse As Byte , Command As Byte
Print "Waiting for RC5..."

Do
Getrc5(adresse , Command)

If Adresse = 0 Then
Command = Command And &B01111111
Print "Adresse:" ; Adresse
Print "Command:" ; Command
End If
Loop

Es empfängt gar nicht außer Terminal "Waiting for RC5..."

http://666kb.com/i/batr6mete4i8a0yan.jpg

for_ro
21.07.2009, 07:52
Hallo,
diese mehrfachen "Waiting for RC5..." kommen aber nur, weil du den µC wiederholt eingeschaltet hast, oder?
Kannst du dir Ausgangssignal vom TSOP auf einem Oszi ansehen?
Wenn nicht, miss es mal mit einem Spannungsmesser.

Gruß

Rolf

Edblum
21.07.2009, 09:10
Moin,

Fehlt vielleicht noch:



Config Rc5 = Pind.4 , Timer = 2
Config Pind.4 = Input
Portd.4 = 1


??

Noch etwas:

Versuch es mal ohne Adressabfrage!

LG

Ed

DEAF BOY
21.07.2009, 09:12
Ja, habe ich ein und ausgeschaltet wegen Hardware-Änderung.

Oszi zeigt Signale von IR-LED und TSOP1736. Müssen beide Signale identisch sein? Bei mir unterschiedlich. Empfänger hat lange High-Signal. Sender kurze High-Signal.

Wenn ich die Code ein bisschen umändere und "Incr Command" durchjage, zeigen die Signale am Oszi unverändert gleich. oO


$regfile = "m8def.dat"
$crystal = 1000000

' +5V <---[A IR-Led K]---[330 Ohm]---> Pb.1(OC1A) for Atmega8

Dim Togbit As Byte , Adresse As Byte , Command As Byte


Togbit = 0

Do
Incr Command

If Command = 0 Then
Adresse = Adresse + 1
End If

Rc5send Togbit , Adresse , Command
Print "Adresse:" ; Adresse
Print "Command:" ; Command
Print
Loop

DEAF BOY
21.07.2009, 10:28
Es klappt. Noch kleines Fehler im Software.

Beim Senden wird bis 255 Byte gesendet. Beim Empfangen bis 63 Byte empfangen, danach wird neue Adresse erzeugt.

http://666kb.com/i/batwwhfbqxe9srp27.gif http://666kb.com/i/batwxfostbm2k7cm7.gif

Sender

'Senden
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600

Dim Togbit As Byte , Adresse As Byte , Command As Byte

Adresse = 0
Togbit = 1

Do
Incr Command

If Command = 0 Then
Adresse = Adresse + 1
End If

Rc5send Togbit , Adresse , Command
Print Adresse ; " | " ; Command ; " (senden)"
Loop



Empfänger

'Empfangen
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600
$lib "mcsbyte.lbx"

'INT0
Config Rc5 = Pind.4 , Timer = 2
Config Pind.4 = Input
Portd.4 = 1

Enable Interrupts
Dim Adresse As Byte , Command As Byte

Print "Waiting for RC5..."

Do
Getrc5(adresse , Command)
If Adresse < 255 Then
Print Adresse ; " | " ; Command ; " (empfangen)"
End If
Loop

for_ro
21.07.2009, 11:28
Es klappt. Noch kleines Fehler im Software.

Beim Senden wird bis 255 Byte gesendet. Beim Empfangen bis 63 Byte empfangen, danach wird neue Adresse erzeugt.

RC5send kann auch den "extended RC5" senden. Dann ist das zweite Startbit gesetzt. Beim Empfänger bekommst du dann glaube ich eine um 64 höhere Adresse. Die musst du dann auf das Command addieren.
Damit sind dann 128 Befehle für ein Gerät möglich.
Siehe auch hier: http://www.sbprojects.com/knowledge/ir/rc5.htm