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
Hallo Kay Dann lass doch mal dein Prgramm in Bascom sehen. Geht normalerweise ohne Probleme RC5. MFG Dieter
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
>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
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
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
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
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
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
hallo, besorg dir mal eine sfh506 ir-sensor von reichelt, der hat bei mir gefunzt. der code scheint mir ok. tschaui
"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
danke peter für die antwort, ich versteh aber trotzdem net, warums net geht. mfg kay
@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
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.
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
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
Da muß nix eingebunden werden... Ein funktionierendes Programm für einen RC5-Tester mit LCD ist im Anhang
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
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
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).
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
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
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 ;-)
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
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.