28.10.2003

Heute hat Christian eine funktionsfähige Version der Software (Build 30) an die anderen Team-Mitglieder versandt. Ab jetzt kann sich jeder Schalter selbst definieren, wenngleich wahrscheinlich noch einige Optimierungen notwendig sind.

Nachfolgend sind einige Screenshots vom funktionsfähigen Programm zu sehen. Als erstes die Startseite des Programms mit einigen Statusinformationen.

Als nächstes eine Seite zur Kontrolle, welche Schalter gerade eingeschaltet sind. Man kann schön sehen, dass die in grün dargestellten Schalter auch im Flugsimulator eingeschaltet sind.

27.10.2003

Am Wochenende hat Christian Zeit zum Löten gefunden – mit tatkräftiger Unterstützung von Moritz.

Das Foto rechts zeigt Christians Prototypen, der vorläufig seine Heimat in einer Pappschachtel gefunden hat. Man kann gut erkennen, wie die ersten 7 Ein-/Aus-Schalter sowie ein Drehschalter (für den Motor) provisorisch in die Papp-Schachtel „eingebaut“ wurden.

Das nächste Bild zeigt die Innereien der Schachtel: Der IO-Warrior-Chip auf dem Starterkit ist gut erkennbar sowie die Schaltermatrix mit den Dioden. Im Hintergrund links sind die Leuchtdioden des Starterkits zu sehen, die im momentanen Status des Projekts immer den aktuell ausgelesenen Status des Port 0 (= Schalter) anzeigen. Das Ganze sieht noch etwas chaotisch aus – das soll sich aber im Endzustand noch ändern.

Die Leitungen von den Schaltern gehen nicht direkt an die Ports sondern derzeit über (zugegebenermaßen etwas große) Lüsterklemmen. So muss man bei Änderungen nicht immer direkt am IO-Warrior herumlöten.

  • Die Drähte zu den Ports sind farbig codiert:
  • Weiß: Leitungen der „Matrixzeilen“, d.h. die Leitungen vom Port 1 zu den Schaltern.
  • Grün: Leitungen der „Matrixspalten“, d.h. Leitungen von den Schaltern zum Port 0.
  • Blau: n.n.
  • Gelb: n.n.

22.10.2003

Martin hat in seinem schier unerschöpflichen Fundus einige Dioden gefunden. Jetzt ist also erst mal wieder Löten angesagt – das Wochenende kommt ja bald…

Der Entwickler des IO-Warrior, Guido Körber, hat sich auch in unsere Diskussion eingeschaltet:

Robert Marquardt:

Interessante Frage: Koennte man nicht die Matrixabfrage einem billigen Tastaturcontroller ueberlassen? D. h. einen Tastaturcontroller ueber den IO-Warrior ansteuern. Guido weiss da bestimmt die Erfolgsaussichten abzuschaetzen.

Guido Körber:

Da gibt es ein Problem: Ein Tastaturcontroller mag es garnicht, wenn zu viele Tasten/Schalter gleichzeitig aktiv sind. Das Standardprotokoll für Tastaturen am USB erlaubt nur sechs Tasten plus die acht Modifiers.

Die lange Verzögerung bei der Benutzung des IO-Warrior liegt wahrscheinlich an mehreren Faktoren. Erstens ist natürlich die Kommunikation relativ langsam. Das Setzen der Portpins geht zwar recht hurtig (Control Transfer, sollte typ. in ca. 1msec geschehen), eine Antwort braucht dann aber berühmte 8msec.

Der erste Report wird auch sofort vom Setzen der Portpins ausgelöst, schließlich verändert sich ja der Zustand der Pins. Wenn die Zuleitungen zu den Schaltern relativ lang sind kann es etwas dauern bis eine Reaktion aus der Matrix kommt, dann würde der richtige Report erst hinter dem vom Setzen der Pins warten müssen.

Dazu kommt dann noch beim Schließen des Kontaktes die Entprellzeit, wie Robert geschrieben hat ist so ein Kontakt nicht einfach zu, sondern springt je nach Qualität und Alter zwischen 0,5 und 10msec lang.

Ich habe schon ein paar mal darüber nachgedacht dem IO-Warrior eine Keypad Funktion zu verpassen, bisher hat mich aber genau das Problem der schwer vorhersehbaren Leitungslängen (und damit Kapazitäten) und der Kontaktgüte davon abgehalten.

Gruß \ Guido Körber

Vielen Dank für diese Info – wir werden also noch ein wenig an unserer Software optimieren müssen.

19.10.2003

Gänzlich unerwartet hat sich Robert Marquardt, einer der Entwickler der IO-Warrior-Programmierschnittstellen, gemeldet und wertvolle Tipps zum tieferen Verständnis der Timings geliefert. Es steht nun der Vorschlag im Raum, für die Schalterabfrage evtl. einen anderen Chip – den Key-Warrior – zu verwenden. Da müssen wir jetzt noch einmal in uns gehen.

09.10.2003

Der Durchbruch ist geschafft! Es ist gelungen, die Schaltermatrix am IO-Warrior richtig anzusteuern und Werte je Matrixzeile auszulesen. Ein intensiver Test ergab aber noch Probleme:

Wenn Schalter der gleichen Spalte eingeschaltet sind, werden die Matrixzeilen kurzgeschlossen. Lösung hierfür: Eine Diode für jeden Schalter!

Das Timing ist auch noch problematisch. Zwischen Ansteuern der Matrixzeile und anschließendem Auslesen muss man mind. 15 Millisekunden warten. Auch Zwischen dem Auslesen und dem Ansteuern der nächsten Matrixzeile sind 15 Millisekunden Wartezeit angebracht. Das macht je Zeile (außer der Letzten) mindestens 30 Millisekunden Wartezeit – bei acht Zeilen im Vollausbau immerhin 240 Millisekunden. Und wir wollen alle 200 Millisekunden Daten zum FSUIPC übertragen… Bei kleineren Wartezeiten stabilisiert sich aber der auszulesende Wert nicht. Lösung hierfür gibt es noch keine.

Erster Lösungsansatz: Alle Matrixspalten mit Pull-Up-Widerständen an +5 V anschließen. Evtl. darf man die Port-Pins nicht einfach einfach überbrücken.

05.10.2003

Wir kämpfen immer noch damit, den IO-Warrior softwaretechnisch zu beherrschen. Die Art und Weise, wie man die Pins auf Input bzw. Output setzt und das Lesen und Schreiben scheint weitgehend klar zu sein. Problem ist aber, dass die Leseroutine so lange hängen bleibt, bis sich am IO-Warrior etwas geändert hat. Sinnvoll wäre hier eine Möglichkeit, herausbekommen zu können, ob neue Daten am IO-Warrior abgeholt werden können. Evtl. tut dies ja die heute entdeckte Funktion iowKitReadImmediate. Aber aufgrund von Krankheit bei Rainer und Christian dauert es wohl noch ein wenig.

via Familienvater-Heimcockpit – Blog – Tagebuch 2003 – 2008.

Oktober 2003