-         

Ergebnis 1 bis 9 von 9

Thema: RC5 Senden klappt nicht

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.01.2010
    Beiträge
    35

    RC5 Senden klappt nicht

    Anzeige

    Moin,

    Ich verzweifel seit Tagen an dem rc5send-Befehl.

    Also ich habe einen Attiny2313 DIP der mit 5,2V(4 x 1,3V Akku) betrieben ist.
    Fusebits sind alle noch auf den Standardwerten (8MHZ mit 8er-Prescaler).
    Dann habe ich den IR-Booster aus der Anleitung zu dem Befehl nachgebaut und an PB3 angeschlossen, was auch bei dem tiny2313 der OC1A ist.


    Mit folgendem Programm, was fehlerfrei kompiliert wird, passiert aber nichts:
    Code:
    '########################### uC Infos setzen ###################################
    $regfile = "attiny2313.dat"                                 ' specify the used micro
    $crystal = 1000000                                          ' used crystal frequency
    $baud = 19200                                               ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40                                             ' default use 40 for the frame space
    
    
    '########################## Ports deklarieren ##################################
    
    'LED1 an PB2:
    Led1 Alias Portb.2
    Config Led1 = Output
    'IR-LED an PB3
    
    '######################## Variablen Deklarieren ################################
    Dim Togbit As Byte
    Dim Command As Byte
    Dim Address As Byte
    
    
    
    Togbit = 0
    Address = 0
    Command = 32
    
    Led1 = 1
    Do
       Waitms 500
       Rc5send Togbit , Address , Command
    Loop
    
    End
    Bin mit dem Multimessgerät an PB3 ran und der war auf Low (müsste aber eigentlich auf High sein, wenn gerade nichts gesendet wird, oder?). Dann bin ich mit dem Oszi an den PB3-Pin ran und da war dann auch kein Flankenwechsel.

    Daraufhin habe ich die IR-LED gegen eine normale LED ausgetauscht und folgendes Programm benutzt und dann blinkte die LED auch im vorgegebenen Takt:
    Code:
    '########################### uC Infos setzen ###################################
    $regfile = "attiny2313.dat"                                 ' specify the used micro
    $crystal = 1000000                                          ' used crystal frequency
    $baud = 19200                                               ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40                                             ' default use 40 for the frame space
    
    
    '########################## Ports deklarieren ##################################
    
    'LED1 an PB2:
    Led1 Alias Portb.2
    Config Led1 = Output
    'IR-LED an PB3
    Led2 Alias Portb.3
    Config Led2 = Output
    
    
    '######################## Variablen Deklarieren ################################
    Dim Togbit As Byte
    Dim Command As Byte
    Dim Address As Byte
    
    
    
    Togbit = 0
    Address = 12
    Command = 10
    
    Led1 = 1                                                    'Led1 anschalten
    Do
      Led2 = 1
      Waitms 1000
      Led2 = 0
      Waitms 500
    Loop
    
    End
    Ich weiß da echt nicht mehr weiter

    Edit:
    Ahja, Bascom v1.11.9.8 Demo

    Edit:
    Der uC müste auch heil sein, habe es nämlich mit 3 Stück versucht und geht bei keinem.

    Edit:
    Kann mir jemand sagen, warum bei dem IR-Booster für die IR-LED ein 10 Ohm Vorwiderstandgenutzt wurde? Laut Datenblatt braucht die IR-LED 1,5V bei 100mA, was nach meiner Rechung ein 35 Ohm Widerstand sein müsste. So bekommt die LED ja über 300mA.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Dunuin,
    warum hast du denn bei der zweiten Version auch das Programm geändert? Lass doch mal die normale LED mit dem RC5send Befehl arbeiten.
    Evtl. musst du dabei auch den Port auf Ausgang konfigurieren, wenn das nicht von Bascom automatisch gemacht wird. Dann wäre das nämlich der eigentliche Grund für den Fehler. Im Simulator wird das Register jedenfalls nicht gesetzt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    23
    Beiträge
    661
    ich glaube das dein Problem ist, dass Bascom nicht weiß an welchen Port die Led Angeschlossen ist und du must sie wahrscheinlich auch an einen PWM-port anschließen.
    MfG Martinius

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    05.01.2010
    Beiträge
    35
    Also PB3 vorher als Ausgang festzulegen brachte nichts. Das habe ich gerade getestet.

    Das mit dem Ändern auf einen PWM-Pin werde ich gleich mal testen.

    Ich habe das hier so verstanden, dass der Vorwiderstand der LED immer an den Pin muss, der OC1A hat:
    ' +5V <---[A Led K]---[220 Ohm]---> Pb.3 for 2313.

    ' RC5SEND is using TIMER1, no interrupts are used

    ' The resistor must be connected to the OC1(A) pin , in this case PB.3

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    OC1A ist der zugehörige PWM Pin von Timer 1a.
    Auf welchen Pin willst du dann wechseln?

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Config RC5 wird benutzt, um den Empfänger-Pin festzulegen.
    Hat nichts mit RC5Send zu tun.

    Hast du denn mal eine normale LED an den Pin gemacht, damit du siehst, was da evtl. passiert?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.01.2010
    Beiträge
    35
    Ja, mit Ändern ist da wohl auch eh nichts. Das Config RC5 scheint nur für den Empfangsbefehl zu sein.
    Muss ich vielleicht noch irgend etwas machen, damit der PWM generell funktioniert?

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Dieser Code

    Code:
    $regfile = "attiny2313.dat"                                 ' specify the used micro
    $crystal = 8000000                                          ' used crystal frequency
    $baud = 19200                                               ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40                                             ' default use 40 for the frame space
    Config Portb.3 = Output
    
    '########################## Ports deklarieren ##################################
    
    'LED1 an PB2:
    Led1 Alias Portb.2
    Config Led1 = Output
    'IR-LED an PB3
    Config Portb.3 = Output
    
    '######################## Variablen Deklarieren ################################
    Dim Togbit As Byte
    Dim Command As Byte
    Dim Address As Byte
    
    
    
    Togbit = 0
    Address = 0
    Command = 32
    
    Led1 = 1
    Do
       Waitms 500
       Rc5send Togbit , Address , Command
    Loop
    
    End
    funktioniert bei mir ganz ausgezeichnet. Da ich keinen 1MHz zur Hand habe, musste ich auf 8MHz einstellen. Am Oszi kann man exakt die Folge der bits erkennen und auch die Trägerfrequenz von 36KHz ist zu sehen.
    Ohne Config Portb.3 = Output kommt übrigens nichts.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    05.01.2010
    Beiträge
    35
    Bin jetzt noch einmal an den Oszi ran und nun geht es.
    Da muss man wohl wirklich noch vorher, entgegen dem Handbuch, den OC1A als Ausgang festlegen.

    Vielen Dank

Berechtigungen

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