I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Alles zum Thema Hardware rund um die Propellerchips und den Hive.
Pinball
Beiträge: 7
Registriert: Mo 8. Mär 2010, 20:45

I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von Pinball »

Möchte gerne einen Pinball (Flipperkasten) realisieren. Dazu benötige ich ein "paar" Eingänge und Ausgänge am Hive Board.

Die Eingänge sollen Ereignisse der rollenden Kugel via z.B. Microswitches oder Lichtschranken erfassen.
Die Ausgänge sollen Hubmagnete, LED's oder sonstige interessante "Effekte" steuern.

Der Chip MCP23016 von Microchip (http://www.microchip.com/wwwproducts/De ... e=en010412) hat 16 IO's welche alle als Ein- oder Ausgänge konfiguriert werden können. Dieser Baustein wird mit dem Bus I2C mit 2 Pin's angesteuert. Mit z.B. 5 solchen Bausteinen kann ich Locker 80 Ein- oder Ausgänge realisieren. Sie selber können sehr einfach mittels 3 Pin's adressiert und alle über die gleiche I2C Pin's z.B. gepolled werden. Es gäbe sogar eine sep. Interruptleitung pro MCP23016, welche z.B auf einen sep. Propeller Eingangspin geführt werden könnte und via Software speziell "schnell" abgefragt werden könnte.

Ist es nun möglich via Hive-Board über die I2C Schnittstelle solche "Kugelereignisse" schnell genug zu erfassen? Der Propeller hat keine Interrupts aber 8 eigenständige COG's :-)
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von drohne235 »

Prinzipiell gäbe da sehr viele Möglichkeiten. Wichtig noch: welche Schnittstellen vom Hive (VGA/Video/PS2/SD-Card/Sound/LAN) brauchst Du denn, bzw. welche könnte man weglassen? Was schätzt Du wie viele Eingänge/Ausgänge Du etwa brauchst?
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
;-)
Beiträge: 16
Registriert: Do 10. Dez 2009, 20:08

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von ;-) »

Bedenke aber, dass I2C relativ langsam ist. Besser ist, wenn du möglichst viel „außerhalb” kontrollierst (also mit einer externen MCU), sonst kann der I2C-Bus schnell zum Flaschenhals werden.


grüssse
;-)
Pinball
Beiträge: 7
Registriert: Mo 8. Mär 2010, 20:45

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von Pinball »

drohne235 hat geschrieben:Prinzipiell gäbe da sehr viele Möglichkeiten. Wichtig noch: welche Schnittstellen vom Hive (VGA/Video/PS2/SD-Card/Sound/LAN) brauchst Du denn, bzw. welche könnte man weglassen? Was schätzt Du wie viele Eingänge/Ausgänge Du etwa brauchst?
Ich denke ich könnte vorerst auf die LAN-Schnittstelle verzichten. Die ist ja mit 5 Pins an den ADMISTRA angeschlossen. Somit könnte ich z.B. 2 Pins (SCL/SDA) für eine Input- und 2 weitere Pins (SCL/SDA) für eine Output-Einheit gebrauchen.
Wieviel IO's ich benötige ist noch schwierig zu sagen, da das Projekt noch ziemlich am Anfang ist ;-)
Aber so geschätzt würde ich sagen etwa 16-32 Input und etwa 32-64 Outputs.
Pinball
Beiträge: 7
Registriert: Mo 8. Mär 2010, 20:45

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von Pinball »

;-) hat geschrieben:Bedenke aber, dass I2C relativ langsam ist. Besser ist, wenn du möglichst viel „außerhalb” kontrollierst (also mit einer externen MCU), sonst kann der I2C-Bus schnell zum Flaschenhals werden.

grüssse
;-)
...eben relativ langsam ist immer relativ ;-) Es muss einfach das Ereignis der Pinball Kugel erfasst werden können. Welche Zeiten dies genau sind weiss ich im Moment auch nicht. Sind dies Zeiten im ms, μs, ns oder ps Bereich ;-)
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von drohne235 »

Also brauchst du auch VGA, Video Maus und Keyboard am Flipper? Was macht man damit an so einem Gerät?

Ansonsten macht der MCP23016 bis zu 400 kbits/s, was durchaus reichen könnte für so ein mechanisches System, und vom Aufwand her wäre es am elegantesten finde ich. Würde ich einfach mal probieren. Und notfalls könnte man ja mehrere I2C-Schnittstellen parallel laufen lassen, wenn es da wirklich zu langsam wird. In jedem Fall ein interessantes Projekt was mit Sicherheit eine Menge Spaß macht, wenn man es stückweise zum Leben erweckt.

Variante 2: Eventuell bietet es sich an einen weiteren Propellerchip als schnellen IO-Plexus einzusetzen, so wie ich das momentan grad mit meinem Magischen Auge experimentell durchspiele. Dieser Prop wird per I2C an den Hive gekoppelt und hat neben den Bits für Hostinterface/Flash/I2C zum Hive alle Ports für eigene Experimente frei.

Variante 3: Falls du den externen RAM an Regnatix nicht brauchst, können die beiden Signale RAM1 und RAM2 verwendet werden, um vielleicht zwei (undekodiert) oder vier (dekodiert) 8Bit-Latches am Bus direkt zu lesen oder zu schreiben. Alle Signale liegen am Expansionsport an, so könnte man diese Logik gut auf einer Erweiterungskarte unterbringen.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Pinball
Beiträge: 7
Registriert: Mo 8. Mär 2010, 20:45

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von Pinball »

drohne235 hat geschrieben:Also brauchst du auch VGA, Video Maus und Keyboard am Flipper? Was macht man damit an so einem Gerät?

Ansonsten macht der MCP23016 bis zu 400 kbits/s, was durchaus reichen könnte für so ein mechanisches System, und vom Aufwand her wäre es am elegantesten finde ich. Würde ich einfach mal probieren. Und notfalls könnte man ja mehrere I2C-Schnittstellen parallel laufen lassen, wenn es da wirklich zu langsam wird. In jedem Fall ein interessantes Projekt was mit Sicherheit eine Menge Spaß macht, wenn man es stückweise zum Leben erweckt.

Variante 2: Eventuell bietet es sich an einen weiteren Propellerchip als schnellen IO-Plexus einzusetzen, so wie ich das momentan grad mit meinem Magischen Auge experimentell durchspiele. Dieser Prop wird per I2C an den Hive gekoppelt und hat neben den Bits für Hostinterface/Flash/I2C zum Hive alle Ports für eigene Experimente frei.

Variante 3: Falls du den externen RAM an Regnatix nicht brauchst, können die beiden Signale RAM1 und RAM2 verwendet werden, um vielleicht zwei (undekodiert) oder vier (dekodiert) 8Bit-Latches am Bus direkt zu lesen oder zu schreiben. Alle Signale liegen am Expansionsport an, so könnte man diese Logik gut auf einer Erweiterungskarte unterbringen.

...ja ok, Maus und Keyboard bräuchte ich nicht unbedingt für einen Pinball ;-)
Aber VGA oder Video möchte ich schon anschliessen, da ich z.B. den Punktestand oder den Spieler etc. anzeigen möchte.

Danke für die drei Varianten, das schöpft Hoffnung und motiviert :-)

Ich denke, ich werde zuerst die "LAN-Pins" dazu "missbrauchen" den I2C Port zu implementieren.
Sollte dies nicht gehen, habe ich ja immer noch ein paar andere Möglichkeiten.

Werde mich auch mal über meine "alten" Physikbücher hermachen und berechnen, was eine Pinballkugel so für Zeiten bzw. für maximale Geschwindigkeiten auf dem Tisch zurück lässt.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von drohne235 »

Und ohne Keyboard/Maus/VGA hast du zusätzliche 10 Ports an Bellatrix - man könnte also auch gut Bellatrix verwenden. Dazu bietet es sich an, die Widerstände für PS2 & VGA direkt neben dem Prop nicht zu bestücken und dafür einen Pinheader einzulöten, an welchem man bequem die Signale abgreifen kann. Kleine TV-Monitore gibt es ja momentan viele.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Pinball
Beiträge: 7
Registriert: Mo 8. Mär 2010, 20:45

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von Pinball »

drohne235 hat geschrieben:Und ohne Keyboard/Maus/VGA hast du zusätzliche 10 Ports an Bellatrix - man könnte also auch gut Bellatrix verwenden. Dazu bietet es sich an, die Widerstände für PS2 & VGA direkt neben dem Prop nicht zu bestücken und dafür einen Pinheader einzulöten, an welchem man bequem die Signale abgreifen kann. Kleine TV-Monitore gibt es ja momentan viele.

Ja, danke, gute Idee :-)
Mir wäre natürlich ein VGA-Monitor mit einer Auflösung von z.B. 1024x768 oder 1280x1024 am liebsten. So einen "alten" 15- oder 17-Zöller hätte ich noch "herumstehen".
Was meinst Du, gibt es da schon ein Example, mit welchem man übergrosse Schriften z.B. für einen Pinball Punktestandanzeige auf dem Display anzeigen kann? So wie ich gelesen habe, sind die meinsten Treiber für einen einfachen Textmode geschrieben. Dort können nur relativ kleine Texthöhen zeilenweise angezeigt werde.
Ev. ginge auch eine VT-100 Emulation. Mit dieser könnte der Cursor exakt an eine Displaystelle im Textmode plaziert werden und so könnte ich mit mehreren Text-Grafikzeichen eigene Zahlen oder Buchstaben generieren und anzeigen lassen.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: I2C (SCL/SDA) für IO-Erweiterung mit MCP23016

Beitrag von drohne235 »

Kennst du das Graphics-Demo von Parallax?

http://www.youtube.com/watch?v=xWWA9vjUFrU

Das Video ist allerdings mit dem TV-Ausgang gemacht. Es gibt mittlerweile auch eine Version, die auf TV und VGA gleichzeitig das Demo ausgibt, aber auf dem VGA wird nicht bildschirmfüllend dargestellt. Damit könnte man Text zoomen, schwenken usw. Ich denke damit ließe sich was tolles basteln.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten