-
-
Erfahrener Benutzer
Roboter-Spezialist
RC5 Sender und Empfänger am ATMega32 wie bekommt man beides?
Hallo Community,
was ich machen möchte :
IR Sender und Empfänger (Tsop u. SFH485) an einem µController betreiben. Sender und Empfänger wurden von mir an zwei unterschiedliche Ports angeschlossen.
Das Problem :
Im Bascom überschneiden sich irgendwie die Definitionen für die Ports. Sprich CONFIG RC5 = PIND.5 kann ich nur einmal definieren somit habe ich entweder den Sender oder wenn ich einen anderen Port definiere den Empfänger.
Die Frage :
Gibt es eine Definition die es mir erlaubt IR - RC5 Sender und Empfänger an zwei Ports gleichzeitig zu betreiben ?
Viele Grüße
Steffen
-
Erfahrener Benutzer
Robotik Einstein
Hallo,
wenn ich das recht verstehe, soll mit einer IR-LED etwas in RC5 versendet werden.
Laut Bascom-Hilfe geht das per Timer1 über den OC1A Ausgang, man muss nicht direkt einen Port definieren für den Sender, nur RC5send aufrufen mit den gewünschten Werten.
Der AVR sollte nur einen OC1A haben, was beim M32 zutrifft.
Nur beim Empfang muss der Pin definiert werden, deshalb gibts keine Überschneidung beim senden/empfangen,
ausser, das evtl. der Empfänger während dem senden deaktiviert wird, damit der eingene Code nicht erkannt wird.
-
Erfahrener Benutzer
Roboter-Spezialist
ahh ^^ stimmt das mit dem OC1A habe ich überhaupt nicht beachtet weil ich davon ausgegangen bin immer die Ports definieren zu müßen.
Da es mit den Ports offensichtlich nicht geht ist das wohl die einzigste Lösung beides zu betreiben.
Das werde ich gleich mal umlöten und das Ergebniss posten.
Danke für den Tip linux_80
-
Erfahrener Benutzer
Roboter-Spezialist
ok das scheint zu klappen.
Das was noch nicht klappt ist das mein Empfänger den eigenen gesendeten Code erkennt. Da blicke ich noch nicht ganz durch.
Command1 = 1 ' power on off
Togbit1 = 0 ' make it 0 or 32 to set the toggle bit
Address1 = 0
Rc5send Togbit1 , Address1 , Command1
Command bedeutet dann wohl mein zu sendendes Signal. Mit Adress kann ich nicht viel Anfangen aber vermutlich kann ich mit einer anderen Adresse noch mehr schicken als wie nur die 64 Zeichen laut der Hilfe.
Stimmt die Einstellung so das er mir eine RC5 Konforme "1" schickt ?
Gruß
Steffen
-
Erfahrener Benutzer
Roboter-Spezialist
so jetzt bin ich mal zu meinem Fernsehr gegangen der das gute alte RC5 Protokoll hat.
Das einprogrammierte ausschalten funktioniert auf anhieb soweit sogut.
Warum aber der µC den eigenen ausgesendeten Code nicht wiedererkennt versteh ich trotzdem noch noch nicht. Immerhin muß man sich so keine Verriegelung einbauen aber irgendeinen Grund muß es ja geben.
-
Erfahrener Benutzer
Roboter Genie
Funktioniert der Empfänger denn, wenn du mit einer externen FB sendest?
Ich kann mir ehrlich gesagt nicht vorstellen, dass du mit dem gleichen µC senden und parallel empfangen kannst. Wenn das RC5send sendet, kann er doch nicht gleichzeitig GetRC5 ausführen. Und sogar wenn du beide Routinen selber programmieren würdest glaube ich nicht, dass das klappen könnte.
Aber ich denke, dass du den eigenen Code wohl auch gar nicht empfangen willst, oder? Höchstens zum Testen.
-
Erfahrener Benutzer
Roboter-Spezialist
Ja der Empfang mit der FB funktioniert auch.
Und ja es sollte nur zum testen sein. Aber vermutlich hast du du recht, dass es der Programmablauf des µC gar nicht gestattet den gesendeten Code zur gleichen Zeit auch wieder zu empfangen. Vermutlich geht das nur mit irgendeiner Multitasking Operation ^^
Was ich mich schon lange Frage ist was die mit der Sperrspannung der Infrarotdiode meinen ? Ist die Sperrspannung gleich der Betriebsspannung ?
Ich möchte mir noch eine eigene IR Fernbedienung bauen und habe aber nur 3 Volt zur Verfügung das reicht für den ATmega8 als 2,8 Volt Variante aber reicht das auch für die LED wenn sie im Datenblatt als 5 Volt Sperrspannung angegeben ist ?
Gruß
Steffen
-
von einem AVR kann der gesendete code nicht von sich selber empfangen werden. multitasting macht der AVR32 nicht.
-
wenn du asm coden kannst, kannste jeden pin am AVR als sender oder empfänger nehmen. der bascombefehlssatz ist dafür zu unflexiebel.
-
Erfahrener Benutzer
Roboter Genie
Pins kannste auch in Bascom nehmen wie du willst. Schlimmer finde ich, dass der Befehl so lange dauert und den µC während der ganzen Zeit blockiert. Ausserdem wird ein Timer verschwendet.
Senden brauche ich nicht, aber zum Empfangen habe ich mir eine eigene Routine gemacht. Dabei liegt das Signal an einem externen Interrupt Eingang und ein durchlaufender Timer wird zum Zählen benutzt. Dadurch braucht es praktisch keine Zeit zum Einlesen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen