mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom + RC5


Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kay

Dann lass doch mal dein Prgramm in Bascom sehen.

Geht normalerweise ohne Probleme RC5.

MFG

Dieter

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: stromi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi stromi,

hab leider kein oszi. geht also net

mfg Kay

Autor: stromi (Gast)
Datum:

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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok werde ich bei der nächsten Bestellung machen.
danke
mfg Kay

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke peter für die antwort,

ich versteh aber trotzdem net, warums net geht.

mfg kay

Autor: formtapez (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: wolli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lip dateien sind in Assembler geschrieben.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: blinki (Gast)
Datum:
Angehängte Dateien:

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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: blinki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: blinki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mittagspause von 10:28 bis 12:20?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh das ist gut zu wissen, dann hilft mir das schon extrem gut weiter.

mfg Daniel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.