Signale für ein komplettes Update der Eingänge E1-E8 und Ausgänge M1-M4

Konstruiert und fotografiert von Dirk Uffmann.
Hochgeladen am 8.4.2014, 13:44 von uffi.  4 / 5

Schlagworte: Datenrate, Parallel, Interface, Universal

Zeitliches paralleles Empfangen des Bytes 0x09 (E4 & E1 high) und Senden des Bytes 0x09 (Motor 1 & 2 mit unterschiedlicher Drehrichtung einschalten). Innerhalb von 10 μs ist ein Update des Eingangs- und Ausgangsstatus erfolgt. Die Datenrate liegt bei 800 kbit/s (in beiden Datenflussrichtungen).

lemkajen (9.4.2014, 06:24:44)

Boah. Super..! parallel einschreiben und Auslesen.. Super Idee.. und ich wusste nicht, das die Cmos so schnell getaktet werden können. hab aber auch noch Datenblatt dazu rausgekramt.. :-)

uffi (9.4.2014, 09:09:57)

Danke für die Blumen, Jens!

Die hohe Datenraten geht mit einem Trick: Eigentlich liegt DataIn auf Pin 18 am FT-Interface-Pin. Der Ausgang des Schieberegisters HCF4014 für die Eingänge E1-E8 wird auf dem Weg zu Pin 18 über ein Oder-Gatter HCF4071 mit dem Ausgangssignal der Timer NE556 der beiden Analogeingänge verknüpft und dann über einen Treibertransistor BC548 invertiert. Da man die Timersignale aber gar nicht braucht und diese sogar stören, wenn die Triggersignale dafür nicht auf high gelegt werden und die analogen Eingänge nicht über den Flachbandstecker auf die Timer durchgeschleift werden, verwenden wir lieber den direkten Ausgang des Schieberegisters an Pin 17. Hier hat das Ausgangssignal auch noch eine geringere Verzögerungszeit zur positiven Clockflanke und daher kann man dann mit einer deutlich höheren Übertragungsrate arbeiten.

uffi (9.4.2014, 09:19:37)

Laut Datenblatt lässt sich das Eingangsschieberegister HCF4014 sogar bis 6 MHz takten, das Ausgangsschieberegister HCF4094 dagegen nur bis 1,5 MHz.

Wenn Du an meinem Code dafür interessiert bist kannst Du ihn hier herunterladen:

http://home.arcor.de/uffmann/Electronics-Dateien/FTUI.zip

Hier habe ich das Ganze auch noch genauer beschrieben:

http://home.arcor.de/uffmann/Mikrocontroller.html

http://home.arcor.de/uffmann/Mikrocontroller-Dateien/ft2.pdf

schnaggels (9.4.2014, 12:26:20)

Hallo Dirk,

danke für den Code, werde ich auch mal reinschauen. Ich denke mal den könnte man zur Ansteuerung eines Extension Moduls (Steuerung über den 2. IR Kanal) sicher erweitern? Steht zwar nicht dabei aber ich vermute das arbeitet mit dem alten IR Handsender?

Gruß, Thomas

uffi (9.4.2014, 15:24:13)

Hallo Thomas,

der Code beinhaltet bereits die Unterstützung für ein weiteres FT-Interface am Erweiterungsport, man muss nur den Switch im Header-File FTUI.h von 0 auf 1 setzen. Die Infrarotfunktion ist im Code allerdings nicht enthalten, da ich eine Onkyo-Fernbedienung mit REC80 Coding verwende. Diesen Code stelle ich aber auf meiner Web Site auch zur Verfügung, siehe hier:

http://home.arcor.de/uffmann/RemoteControl4.html

http://home.arcor.de/uffmann/RemoteControl-Dateien/REC80.zip

lemkajen (13.4.2014, 18:54:38)

moin Dirk! Ich werde die Tage mal nen Atmel Deinem Code “füttern” - müsste ich dann zwingend die Fuses so setzen, dass ich den internen Takt verwende, oder geht das Timingmäßig auch auf nem arduinoboard? einen 5v isp programmer hab ich.. der 2. Teil Deines Artikels gefällt auch ;-). ich arbeite parallel an der arduinobasietenden Version weiter - damit derjenige, der nicht am interface direkt löten möchte, auch weiterhin gefüttert wird ;-) ich finde beide Versionen schick!

uffi (13.4.2014, 19:25:26)

Hi Jens, der Code hat keine Anforderungen an die Fuses bzw den Systemtakt. Das schnelle Timing habe ich mit einem 18,432 MHz Baudratenquarz erzielt, aber es geht natürlich auch langsamer.

Deine Arduinoversion ist toll. Zumal es Arduino-kompatible Boards in der Bucht ja mittlerweile sehr günstig gibt. Hab mir jetzt ein Arduino-Clone Mega2560 für 11 Euro inkl. Versand aus China bestellt. Wobei ich das dann auch in C programmieren werde und nicht mit Arduino-Sketches, die mag ich nicht so. Und für viele ist es ja auch eine Hürde, selbst eine Platine zu machen. Gruß, Dirk

lemkajen (16.4.2014, 19:27:01)

das war ja der Grund, es mit dem Arduino möglichst einfach zu halten, quasi für “Jedermann” und ohne Eingriffe in das Interface. Ich selbst sitze halt auch nicht mehr so gerne stundenlang im Keller, um Platinen anzufertigen, wobei Material und Kenntnisse genug da sind ;-) Gruß Jens