Forum: Mikrocontroller und Digitale Elektronik Bascom + RC5


von Kay (Gast)


Lesenswert?

Hallo,

wenn ich das Sample "RC5" von Bascom benutze klappt es nicht. benutze
ich FastAVR mit dem RC5 Sample, dann klappt es. ich benutze nen TSOP
1736. er hängt an Pind.2 ! kann mir jemand helfen ?

mfg Kay

von Dieter B. (Gast)


Lesenswert?

Hallo Kay

Dann lass doch mal dein Prgramm in Bascom sehen.

Geht normalerweise ohne Probleme RC5.

MFG

Dieter

von Kay (Gast)


Lesenswert?

Hi Dieter,

es ist ein TSOP 1736 an 5V und GND.
der code lautet :

$regfile = "8535def.dat"
$crystal = 4194304
$baud = 9600

$lib "mcsbyte.lbx"

Config Rc5 = Pind.2

Enable Interrupts


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

Do

  Config Pind.2 = Input
  Getrc5(address , Command)


  If Address = 0 Then


     Print Address ; "  " ; Command
  End If
Loop
End

Wenn ich das Terminal programm starte, dann kommt nur Waiting for RC5,
wenn ich ne Taste drücke, dann passiert nix. mit FastAVR funzt es.
würde aber gerne RC5 nehemen.

mfg Kay

von Bernd (Gast)


Lesenswert?

>If Address = 0 Then
> Print Address ; "  " ; Command

Sendet die FB denn RC5 für TV (Adresse = 0) ?
Wenn es eine FB für Videorecorder o.ä. ist die Abfrage einfach
weglassen.

Bernd

von Dieter B. (Gast)


Lesenswert?

Hallo Kay

Hast du einen externen Pullup Widerstand am PIND.2 ?

Wenn nicht, schalte den internen mal ein mit

Portd.2 = 1  ein.

Config Pind.2 = Input  brauchst du nicht, macht config RC5 für dich.

MFG

Dieter

von Kay (Gast)


Lesenswert?

Hi Dieter,

geht als noch nicht. hab jetzt mal das gemacht was du und Bernd gesagt
hast, aber hilft nix. Die FB sendet RC5 ( ist von nem Sat-Reciever also
SysAdr = 0 )

mfg Kay

von Dieter B. (Gast)


Lesenswert?

Hallo Kay

Probier mal das Programm aus.

Config Rc5 = Pind.2
Portd.2 = 1

Enable Interrupts


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

Do


  Getrc5(address , Command)
    Print Address
    Print Command
Loop
End


MFG
Dieter

von Kay (Gast)


Lesenswert?

also es passiert mal was ;-)

ich bekomm im Terminal Programm jetzt folgendes: 255 255 255 255 255
255 ....

wenn ich auf die FB drücke, dann gehts schneller. also es tut sich was,
aber ich bekomm immer nur 255 255 255 ... auch ohne wenn ich was mach.

mfg Kay

von stromi (Gast)


Lesenswert?

also, ich hab' das auch mal probiert und es ging....
aber ich hatte einen anderen sensor. kannste das signal vom sensor mit
einem oszi darstellen?
tschaui

von Kay (Gast)


Lesenswert?

hi stromi,

hab leider kein oszi. geht also net

mfg Kay

von stromi (Gast)


Lesenswert?

hallo,
besorg dir mal eine sfh506 ir-sensor von reichelt, der hat bei mir
gefunzt. der code scheint mir ok.
tschaui

von Kay (Gast)


Lesenswert?

ok werde ich bei der nächsten Bestellung machen.
danke
mfg Kay

von Peter D. (peda)


Lesenswert?

"ok werde ich bei der nächsten Bestellung machen."

Das bringt nichts !

Die Sensoren arbeiten alle gleich.
Höchstens in der Reichweite können kleine Unterschiede bestehen.


Peter

von Kay (Gast)


Lesenswert?

danke peter für die antwort,

ich versteh aber trotzdem net, warums net geht.

mfg kay

von formtapez (Gast)


Lesenswert?

@Kay
Ich habe gerade das gleiche versucht.
Hatte erst den selben Effekt -> Immer nur $FF und bei drücken der FB
kammen die Werte nur schneller.
Ich habe jetzt mal eine Phillips Fernbedienung probiert und es hat auf
anhieb geklappt.

Vielleicht hat Deine FB auch kein RC5 ?!

MfG
formtapez

von wolli (Gast)


Lesenswert?

Um generell erst mal etwas zu empfangen kann man die capture-Funktion
des Timer/Counter1 benutzen. Man kann dann die Zeitabstände zwischen
zwei Flanken messen und z.B. über das UART ausgeben. So bekommt man
auch exotische Fernbedienungscodes in den AVR. Ich habe so die Codes
einer Klimaanlagen-FB aufgezeichnet, die pro Tastendruck über 100
Flanken erzeugt.

von Daniel (Gast)


Lesenswert?

Ich lese mich gerade in die Materie ein.
Da ich in Visual Basic recht fit bin, habe ich gemerkt dass ich mit der 
Programmierung über BASCOM am schnellsten rein kommen werde.
Nun jetzt kucke ich mir immer die CodeSchnippsel für die RC5 Abfrage an 
aber muss mich folgendes fragen.
Wie erzeugt der Befehl GETRC5 ein brauchbares Ergebnis.
Scheinbar steht dahinter ja eine externe Prozedur, wo aber ist diese? In 
welcher Datei?
DEnn diese Prozedur würde ich mir gerne anschauen, da ich über die 
Umsetzung nicht so recht bescheid weiß.
Ist diese auch in BASCOM programmiert oder is des in 
Assembler(Maschinensprache) und somit eh nicht verständlich für mich?

mit freundlichen Grüßen

Daniel

von bas_ratte (Gast)


Lesenswert?

lip dateien sind in Assembler geschrieben.

von Daniel (Gast)


Lesenswert?

ach und dort ist auch die Funktion dann drinnen oder?

Des heißt die .lip Datei muss mit rüber in des Chipchen und dann 
funktioniert das mit dem schönen GETRC5 Befehl

von blinki (Gast)


Angehängte Dateien:

Lesenswert?

Da muß nix eingebunden werden...
Ein funktionierendes Programm für einen RC5-Tester mit LCD ist im Anhang

von Daniel (Gast)


Lesenswert?

hmm entweder hab ich noch nicht genug darüber gelesen und gelernt oder 
ich raffs einfach nicht.
Wie soll die GETRC5 Funktion zu einem Ergebnis kommen.

Ich mein ich muss doch das RC5 Signal erstmal dekodieren, da auf einer 
Leitung die Daten ja seriell hintereinander ankommen.
So wie ich den obigen Code verstanden habe macht mir das ja praktisch 
die GETRC5 anweisung aus dem Code. Jedoch muss sich dahinter ja noch 
irgendetwas verstecken, oder?

Vielen Dank für die Geduld

von blinki (Gast)


Lesenswert?

Na die GetRC5 Routine ist doch im Compiler schon verankert und wird beim 
compilieren mit in die End-Datei eingebunden.
Wenn Du die Funktion von GetRC5 genau analysieren möchtest, dann bist du 
bei Bascom eigentlich falsch.
Schau mal nach ATMEL in die AVR410... 
http://www.atmel.com/dyn/resources/prod_documents/doc1473.pdf

von Karl H. (kbuchegg)


Lesenswert?

Stell es dir so vor.
In Visual Basic hast du jede Menge COM Elemente benutzt
um Dinge zu erledigen, über die sich bereits ein anderer
den Kopf zerbrochen hat und der dir seine Ergüsse in
Form von fertigen Komponenten zur Verfügung stellt.

In BASCOM ist das nicht anders. BASCOM kommt mit einer
ganzen Menge Funktionalität daher, die die Entwickler
eingebaut haben.

In VB musstest du die COM Elemente aussuchen. In BASCOM
hast du die einfach zur Verfügung (sind als Schlüsselwörter
in die Sprache eingebaut).

von Daniel (Gast)


Lesenswert?

Jetzt hab ichs gerafft! Danke Herr Buchegger, diese Beschreibung des wie 
der Funktion war genau das was ich gebraucht habe.


Mit diesen Infos im Gepäck gehe ich nun wieder meiner Arbeit nach, und 
beende damit die Mittagspause.

Mit freundlichen Grüßen

von Paul Baumann (Gast)


Lesenswert?

Das Toggle-Bit im Kommando-Byte muß nach jedem empfangenen Behehl 
zurückgesetzt werden.

Command = Command And &B01111111

Setze mal die Zeile noch hinter "If Address = 0 Then"

rein.

Freilich versteckt sich hinter "GETRC5" eine Assemblerroutine, die Du
damit benutzen kannst. Das ist ja das Schöne an Bascom, daß es eine 
ganze Menge vorgeferigter Funktionen gibt und man nicht alles "zu Fuß" 
programmieren muß.

MfG Paul

von blinki (Gast)


Lesenswert?

Mittagspause von 10:28 bis 12:20?

von Daniel (Gast)


Lesenswert?

nö Mittag war nur von kurz vor 12 bis halb 1. Ich arbeite ja so auch 
viel am PC dann kann man hin und wieder kucken und antworten ;-)

von Gast (Gast)


Lesenswert?

Hier kannst du auch mal sehen, wie das "zu Fuß" geht.
Das hat einige Vorteile gegenüber der GETRC5 Funktion.

http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=20209
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=34497

von Daniel (Gast)


Lesenswert?

Vielen Dank da werde ich mich Abends mal durchackern und sehen ob ich 
das verstehe.
Nur ne kurze Frage dazu, bei Beispiel 1 läuft der Timer ja ständig, wäre 
es nicht sinnvoller nach Eingang eines Codes den Timer zu stoppen und 
auf einen Signaleingang am TSOP zu warten? Ist nur so eine Idee von mir. 
Jedoch könnt ich den Code ja auch falsch interpretiert haben.

Mit freundlichen Grüßen

Daniel

von Gast (Gast)


Lesenswert?

Wenn der Timer für nichts anderes da ist, dann könnte man ihn auch 
stoppen. Meistens benutzt man aber durchlaufende Timer, die für 
verschiedene Zwecke Zeiten messen. Dann kannst du natürlich nicht 
abschalten.
Dein Code sollte eh so geschrieben sein, dass die Ausführungszeit der 
Timer ISR keinen Einfluss auf den Rest hat. Sonst käme es beim Starten 
des Timers zu unerwünschten Reaktionen.
Ich denke übrigens, dass der Timer in beiden durchläuft.

von Daniel (Gast)


Lesenswert?

Jetzt habe ich viel über den RC5 Standard gesucht, aber entweder lags an 
der Tageszeit oder an was anderem, denn ich werd nicht schlau daraus. 
Auf jeder Seite steht etwas anderes.
Bedeutet jetzt ein Flankenwechsel von 1 auf 0 in der Mitte eines Bits 
eine 1 im übertragenen Code oder eine 0. Denn ich hatte allein heute 
morgen eine Seite die sich in der Sache sogar widersprochen hat.
Nur wäre dass noch sehr wichtig, denn dann entwickle ich mal meinen 
eigenen RC5 Dekoder zur Übung.

Bei Flankenwechsel will ich den wissen den mir mein TSOP ausgibt, sprich 
dessen moduliertes Signal, frage ich ja am Einang meines uC ab. Und die 
Bedeutung dieses Flankenwechsels ist mir noch nicht ganz klar, aber 
ichbin sicher dass mir das jemand zuvelässig sagen kann.

Mit freundlichen Grüßen

Daniel

von Sebastian (Gast)


Lesenswert?

Na der Unterschied kommt halt, weil nicht jeder Empfänger in der 
gleichen Art das Signal ausgibt.
Auf der Sende-Seite arbeiten alle gleich, eine aufsteigende Flanke in 
der Mitte ist eine '1', eine fallende Flanke eine '0'.
Der Sender ist natürlich in der Regel aus, wenn kein Signal übertragen 
wird, d.h. er sendet nicht die ganze Zeit die Trägerfrequenz.
Anders die Empfänger. TSOP17** z.B. ziehen den Ausgang auf low-Pegel, 
wenn ein Impuls kommt, ohne Signal wird er durch pullup auf high 
gehalten. Damit invertieren sie das Signal. D.h. eine steigende Flanke 
am Sender wird zu einer fallenden am Empfänger. Schau mal in dem 
Datenblatt eines TSOP1736 bei Reichelt, da kannst du dies gut erkennen.
Bei anderen Empfängerchips kann das aber andersherum laufen, ist aber 
eher selten.

Gruß

Sebastian

von Daniel (Gast)


Lesenswert?

ahh das ist gut zu wissen, dann hilft mir das schon extrem gut weiter.

mfg Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.