PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC5 Senden klappt nicht



Dunuin
03.09.2010, 13:17
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.
http://www.avrhelp.mcselec.com/irboost.gif

Mit folgendem Programm, was fehlerfrei kompiliert wird, passiert aber nichts:


'########################### 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:


'########################### 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.

for_ro
03.09.2010, 19:57
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.

Martinius11
03.09.2010, 20:36
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.

Dunuin
03.09.2010, 22:15
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 (http://www.avrhelp.mcselec.com/rc5send.htm) 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

for_ro
03.09.2010, 22:18
OC1A ist der zugehörige PWM Pin von Timer 1a.
Auf welchen Pin willst du dann wechseln?

for_ro
03.09.2010, 22:37
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?

Dunuin
03.09.2010, 22:40
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?

for_ro
03.09.2010, 23:30
Dieser 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.

Dunuin
04.09.2010, 23: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 :-)