-         

Ergebnis 1 bis 6 von 6

Thema: RC5 - Es empfängt nicht

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.01.2005
    Ort
    Baden-Württemberg
    Alter
    37
    Beiträge
    127

    RC5 - Es empfängt nicht

    Anzeige

    Hab hier 2x Atmega8, LD 274 bzw. grüne LED als Kontrolle und TSOP1736.
    Die Hardware wurde identisch aufgebaut wie auf dem Schaltplan.


    Sender
    Code:
    '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
    Code:
    '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..."


  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    Renkum
    Alter
    72
    Beiträge
    128
    Moin,

    Fehlt vielleicht noch:

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

    Noch etwas:

    Versuch es mal ohne Adressabfrage!

    LG

    Ed

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.01.2005
    Ort
    Baden-Württemberg
    Alter
    37
    Beiträge
    127
    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

    Code:
    $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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.01.2005
    Ort
    Baden-Württemberg
    Alter
    37
    Beiträge
    127
    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.



    Sender
    Code:
    '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
    Code:
    '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

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von DEAF BOY
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •