Hallo, ich muss auf einem Parallax Propeller, die RC-5 Codes beibringen. Ich weiß im Prinzip, wie die Codes aufgebaut sind, aber ich habe keine Ahnung wie man das nun implementieren kann/sollte. Hier ist das ganz gut beschreiben, wie das Protokoll aufgebaut ist: http://www.sprut.de/electronic/ir/rc5.htm Also ich würde gerne wissen was es da für Ansätze gibt usw. Auf dem Propeller kann ich einen eigenen Kern mit 80Mhz spendieren, der sich ausschließlich darum kümmert, sollte wohl reichen. Ich habe keine Interrupts oder ähnliches! Ich habe praktisch nur nen Inputpin und muss den pollen ;)
Hier findest du auch Angaben zu dem Protokoll (und vielen anderen): http://www.sbprojects.com/knowledge/ir/ir.htm Und hier einen Ansatz als state machine (PIC aber gut umsetzbar): http://www.sbprojects.com/projects/ircontrol/picir/rc5.htm Bei 80 MHz kannst du ja nebenher noch ne kleine FFT machen ;) gruß hans
> Wie implementiert man RC-5? am besten so wie peter =) Beitrag "Fernbedien RC5 Empfänger" nachtrag: zu langsam für den chef ^^
Ufff.... glaube da ist es ja einfacher das komplett neu zu machen. Mir geht es ja nicht um den Code, da ich den sowieso nicht gebrauchen kann, da ich das ganze in Spin programmieren muss. Mir geht es um das System und das System Timer/Interrupt hatte ich ja nun schon ausgeschlossen :(
Fabian S. wrote: > Ufff.... glaube da ist es ja einfacher das komplett neu zu machen. > Mir geht es ja nicht um den Code, da ich den sowieso nicht gebrauchen > kann, da ich das ganze in Spin programmieren muss. Also nen MC, den man nichtmal in C programmieren kann, würde ich nicht anfassen. > Mir geht es um das > System und das System Timer/Interrupt hatte ich ja nun schon > ausgeschlossen :( Was, das Ding hat 8 Kerne und die haben nichtmal jeder ihren eigenen Timerinterrupt ??? Du kannst keinen Code einlesen, der seine Information in der Pulslänge hat, wenn Du keinen Timer hast, um sie zu messen. Ich kann da nur noch mit dem Kopf schütteln, einen ganzen 80MHz 32Bit-Kern für so ne läppische Task zu vergeuden, die jeder 1MHz 8Bitter (mit Timer) so nebenbei macht. Peter
Das Konzept dieses µCs ist halt ein gänzlich anderes. Da kann man einen Kern für nen Timer verwenden... Und ich muss ihn verwenden, also auch hier keine weitere Diskusion :(
>also auch hier keine weitere Diskusion :(
Nur mal so zur Info:
Du willst Hilfe haben, nicht wir....
Fabian S. wrote: > Das Konzept dieses µCs ist halt ein gänzlich anderes. Da kann man einen > Kern für nen Timer verwenden... Na dann brauchst Du eben 2 Kerne, einen als Timer und den anderen zur Dekodierung. Peter
Ja gut, dann halt 2, ist auch kein Problem... Nur wie macht man das dann? Soll ich einfach mit ner Schleife warten bis der Pin auf High geht (sollte dann ja das erste der drei Initialisierungsbits sein) und dann auf den Timer horchen um alle 889µs den Pin wieder abzufragen? Wie baut man das am besten, denn wenn ich den Timer starte sobald ich das erste High bekommen habe und die Fernbedienung etwas zu langsam ist werde ich beim nächsten Tick noch immer den gleichen Status abfragen wie zuvor... Btw: Es gibt zwar keinen Timer in dem µC, aber einen System-Counter, den könnte ich dafür doch genausogut nutzen oder? Wenn ich das erste Bit bekomme kann ich doch ausrechnen wann die anderen kommen müssten und dann immer mit ner Schleife drauf warten bis er dort abgekommen ist?
Also an deiner Stelle würde ich mal in einem Parallax Forum stöbern, ich wette mit Dir dort haben sie bereits einen fertigen Code für RC5. Ich möchte Dich um Gottes Willen hier nicht vertreiben, aber hier sind die Propeller-Nutzer nicht all zu viel vetreten. Ich hatte auch schon mal mit dem Parallax geliebeugelt aber bin dann doch beim AVR hängen geblieben ;-)
Ja es gibt ja diese Codesammlung, jedoch gibts da nix mit RC5 :( Werde mein Glück mal probieren....
War bzw. ist auch nicht bös gemeint, aber hier tummeln sich echt super Leute, nur die kennen sich meistens am besten mit AVR aus. Also was ich eben auf die schnelle entdeckt habe, die nutzen für RC5 wohl eher Assembler auf dem Propeller. Aber leider kein Beispiel-Code bisher entdeckt^^
Fabian S. wrote: > Btw: Es gibt zwar keinen Timer in dem µC, aber einen System-Counter, den > könnte ich dafür doch genausogut nutzen oder? Ja. Macht man bei 8Bittern auch so, daß man einen der Timer als Systemtimer benutzt und der macht dann zyklische Interrupts. In meinem Code habe ich etwa 50µS benutzt. Und dann wird eben getestet, ob der Input gewechselt hat und dementsprechend ausgewertet (0-Bit, 1-Bit oder Störung) und die 14 Bits gesammelt. Peter
Jo da habe ich nun auch implementiert, aber irgendwie braucht der 10 Jahre um eine Übertragung einzulesen, also irgendwas klappt da mit den Sleeps noch nicht so wie es soll...
Hat der Timer denn keine Hardware-Features wie Bit-Latching und Capture von Signalen? Auf dem MSP430 ging das relativ leicht mit dem Timer, fast ohne CPU-Intervention: Beitrag "Fernbedien RC5 Empfänger mit MSP430"
Öhhh, ich glaube ich weiß jetzt warum meine Implementation icht läuft...die Sprache in der man den normal Programmiert ist glaube ich extremst langsam. Habe hier ne Funktion in der eine kleine Schleife ist von 28 Durchläufen und einer kleinen Rechnung und er braucht dafür irgendwas zwischen 70 und 80 TAUSEND! Takte.... weiß nicht ob das normal ist, oder ob ich nen Fehler drin habe... Naja, da ein halbes Bit nur 35560 Takte lang ist wird das natürlich nichts, da der Counter nach dem Berechnen längst über den nächsten Haltepunkt geschossen ist...werde mich wohl mal mit dem Spin Assembler auseinandersetzen müssen :(
einen eigenen kleinen attiny dafür zu verwenden scheidet aus? kostet weder wirklich platz noch geld und schafft dir alle probleme vom hals. vergleich mal deine entwicklungskosten für deine zauber-cpu mit dem dauereinsatz des attinys (bei kopiertem "peter-code") =)
Kommt jetzt eigentlich nicht mehr in Frage... Das Board ist fertig geätzt, bestück und läuft super, mal ganz absgesehen davon, dass darauf für ein Tiny kein Platz mehr wäre, habe die vollen 10x10cm von Eagle ausgeschöpft, ist echt kein mm Platz übrig :D Dann müsste ich mir für ... öhh 150€ oder so die einfache Eagle Version holen, das lohnt sich sicher nicht :D
>Habe hier ne Funktion in der eine kleine Schleife ist >von 28 Durchläufen und einer kleinen Rechnung und er braucht dafür >irgendwas zwischen 70 und 80 TAUSEND! Takte... Macht ja nix, wenn die Performance mit 80 MHz und 8 Kernen wieder wettgemacht wird... wechlach
Ja ich denke mal, dass desshalb die ganzen Treiber in Assembler geschrieben sind...
Ahh... habe eine fertige Lib gefunden, heißt "IR Kit" und gibts beim Parallay Object Exchange.
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.