PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RNBFRA: Ein RC5-Sklave



Dirk
14.09.2006, 18:25
Schon wieder ein neuer Sklave?

Weil sich der 2313-Coprozessor auf der RNBFRA oft langweilt (es fehlte die passende Aufgabe!), hat ihm PicNick ja schon beigebracht, wie er als I2C-Slave hervorragend 10 Servos ansteuern kann.
Guckst du da: https://www.roboternetz.de/phpBB2/viewtopic.php?t=21164

Warum sollte er auf dieser Grundlage nicht noch weitere Fähigkeiten entwickeln? Wie wäre es, wenn er (als zweite - zugegeben banale - Aufgabe) das Senden und Empfangen von RC5-IR-Code lernen würde und das natürlich als I2C-Sklave?
Leider geht das mit BASCOMs "Getrc5" gar nicht, so dass ich den IR-Empfang im Hintergrund über einen Timer mit Zwischenpuffer gelöst habe.
Für die I2C-Slave-Funktion habe ich natürlich die geniale Lösung von PicNick genommen, wie sie auch in seinem Servo-Sklaven (RNSI2C) umgesetzt ist.

An den 2313 auf der RNBFRA muss ein IR-Empfänger (z.B. TSOP 1736) an Pinb.2 = "Servo 3" angeschlossen werden und optional ein IR-Sender an Pinb.3 = "Servo 4".

In den Coprozessor gehört das Prog "RNIRI2C.HEX". Es ist nicht nur in einem 2313 auf der RNBFRA lauffähig, sondern kann auch auf anderen Platinen arbeiten, auf denen SDA = Portd.2 und SCL = Portd.3 ist.
Der M32 arbeitet dann das Demoprog "RNIRI2CTest.bas" ab.

Als Demo schickt der Master (M32) im 10-Sekundenrhythmus via I2C den Befehl an den Slave, alle IR-Kommandos von 0 bis 63 nacheinander zu senden. Dafür hat der Slave keinen "Sendepuffer", d.h. jeder einzelne IR-Code (bestehend aus Adresse und Kommando) wird gnadenlos gesendet. Wie bei RC5 üblich, "toggelt" der Slave selbständig,- darum braucht sich der Master also nicht zu kümmern.

Zusätzlich empfängt der Master vom Slave (2313) IR-Codes, die z.B. von einer TV-RC5-Fernbedienung stammen. Dabei kann der Slave 10 empfangene IR-Codes zwischenpuffern. Diese 10 Codes können dann vom Master gelesen werden (also max. 20 Bytes,- er kann auch weniger lesen, aber dann bitte eine GERADE Zahl von Bytes).
Wie häufig sollte ein Master den Puffer des Slave lesen? Wenn man nicht sinnlos auf der Fernbedienung herumdrückt, kann man (zumindest ICH) gezielt max. 2 Tasten pro Sekunde ansteuern. Damit dürfte kein Tastendruck verloren gehen, wenn der Master alle 5 Sekunden eine Abfrage macht.
Enthalten alle 10 Codeplätze 255 (für Adresse und Kommando), dann ist der Puffer leer. Enthält nur 1 Codeplatz die Werte 255 (Adresse und Kommando), dann enthält der Codeplatz DAVOR den zuletzt gesendeten IR-Code.
Beispiel: Nur Codeplatz 3 enthält 255. Dann stehen auf Platz 2 und 1 des Puffers die beiden zuletzt empfangenen IR-Codes und auf den Plätzen 10 bis 4 der dritt- bis neuntletzte empfangene IR-Code. Der Puffer arbeitet also in Form eines "Ringpuffers" und wird nur dann komplett gelöscht, wenn es vom Master einen Lesezugriff gab.

Der Master könnte auch die I2C-Adresse des Slave (Standard: H68) ändern.
Format: START | 1 | neue I2C-Adresse | STOP
Die neue I2C-Adresse (2, 4, ... 252, 254) bleibt im Slave fest gespeichert.

Zusätzlich läßt der Master noch über den Energieport der RNBFRA 1.22 (PCF3) drei LEDs munter blinken. Aber das ist natürlich Unsinn und müßte nicht sein (sieht aber gut aus)!

Viel Spaß!

Gruß Dirk

P.S.: Bitte um Eilmeldungen, falls der Sklave nicht das macht, was der Master will!

PicNick
14.09.2006, 18:41
Na das freut mich, wenn wir den RNBFRA-CoProz endlich ein bißchen ins Schwitzen bringen ! Ist ja schade drum.

Dirk
14.09.2006, 19:46
Ist ja schade drum.

Höre ich da so etwas wie Mitleid??? [-(

Ist doch nur ein 20-beiniger Siliziumklumpen! O:)

Gruß Dirk

PicNick
15.09.2006, 06:59
Na, so ein Controller is ja auch nur ein Mensch.
Na, im Ernst: Man kann, wenn es eine vernünftige KOmmunikation zwischen M32 und 2313 gibt, einiges verlagern, was jetzt die M32-Programme aufbläst und kompliziert macht.
z.B
Dadurch, daß 10 Portpins von aussen direkt zugänglich sind, kann man komfortabel ein LCD und/oder Keyboard betreiben lassen (ohne Zusatzboard)
Man könnte auch die RS232 Kommunikation vom Co erledigen lassen und am Mega nurmehr I2C machen
etc .

Dirk
15.09.2006, 16:25
Hallo PicNick,


... kann man komfortabel ein LCD und/oder Keyboard betreiben lassen (ohne Zusatzboard). Man könnte auch die RS232 Kommunikation vom Co erledigen lassen ...

Oh je, wenn das ein Wink mit dem Zaunpfahl war, dann liegt ja ein steiler Weg vor mir. :-s
Dann werde ich mich 'mal an die Arbeit machen. #-o
Vielleicht gibts ja noch ein paar "Mittäter"??

Gruß Dirk

PicNick
15.09.2006, 18:15
.Wink mit dem Zaunpfahl ..
Hehe *g*

Ein paar "Mittäter" wären wirklich fein. Es muss ja noch mehr RNBFRA-Besitzer geben, die Bedarf hätten.