Ein Display für mehrer Controller

OP #1588929
Lesenswert?

Hallo Gemeinde,
ich beschäftige mich erst seit kurzem mit der Programmierung von PIC's.
Erfolgreich habe ich auch schon ein Display angeschlossen und nun 
beabsichtige ich in einem 19" Gehäuse mehrer Controllerkarten für 
verschiedene Anwendungen einzubauen.
Die Controller werden nicht miteinander verbunden (leider habe ich noch 
keine Erfahrungen mit diversen Bussen gemacht).
Ist es dennoch möglich ein Diplay an mehreren Controller anzuschließen 
ohne auf mechanische Umschalter angewiesen zu sein?

Über Anregungen und Tipps wie ich sowas realisieren könnte, wäre ich 
Euch dankabr.

Gruß Andreas
#1588944
Lesenswert?

Hallo Andreas,

ist zwar nicht sonderlich schön, sollte aber möglich sein.
Wichtig ist, dass du die Ausgänge am Controller auf Input schaltest, 
wenn nichts gesendet wird.

Zieht ein Controller die Leitungen zum Display auf Low und ein anderer 
auf High, hast du den Salat - der schwächere gibt nach (und büßt dadurch 
seine I/Os ein oder vernichtet sich komplett selber).
Wichtig ist daher auch das Überprüfen, ob das Display verwendet werden 
darf -> weiterer Pin von den µCs verwenden.
Vor dem Senden dann prüfen, ob der Bus frei ist.
Am Besten einen externen Pull-Up verwenden und die I/Os nur zwischen 
Input und (Output)Low schalten lassen.
Über den Input und High-Zustand kannst du dann feststellen, dass der Bus 
frei ist und die Leitung dann auf Low ziehen. Liegt das Signal auf low 
-> Bus belegt.

Sinnvoller ist es jedoch allemal, sich mit Bussystemen zu beschäftigen. 
Prädesteniert für deinen Fall wäre denke ich der I²C. Kurze Strecken, 
Multimaster und nicht allzu aufgebläht. Du brauchst dann halt einen 
weiteren Controller, der eine Schnittstelle von I²C zum Display 
darstellt.

HTH
OP #1588983
Lesenswert?

Danke für die infos.
So High-End wollte ich das gar nicht machen. Mir würde es schon 
vollkommen ausreichen, wenn ich an dem Controller, an dem ich was über 
das Display einstellen möchte, einen Taster drücke und dann das Display 
entsprechend auf diesen Controller umschaltet. Drücke ich dann an einem 
anderen Controller einen Taster, so schlatet das Display wiederum um.

Also müsste ich die Pins an den Controllern die ich gerade nicht "aktiv" 
habe, auf Low setzen um dann den aktiven betreiben zu können?
#1589006
Lesenswert?

Hallo,

erkläre Dein Display und die Tasten zum Terminal. Also eigenen kleinen 
AVR ran und die Kommunikation mit den anderen Boards dann per RS232, 
I2C, SPI o.ä.
Taste am Display für Controller 1 schaltet dann TxD/Rxd an den 
gewünschten Controller durch und sendet ein vereinbartes Zeichen.
Der Controller empfängt per RX-Interrupt das Zeichen und meldet sich 
dann eben beim Display.
Kann man auch gut noch ausbauen.

Gruß aus Berlin
Michael
OP #1589045
Lesenswert?

Hallo Michael,
mein Display wird über 4 Datenleitungen und RS, Enable verbunden.
Diese Leitungen stehen mir ja nun an jedem Controller zur Verfügung und 
über einen weiteren PIN wollte ich ein Taster anschließen, der dann 
diese Ausgänge entsprechend aktiviert. So zumindest meine Theorie, da 
ich nicht weiß, was ich solange mit den Anderen Controllern machen muß, 
um diese nicht zu beschädigen. Reicht es aus, diese PIN's solange auf 
low zu legen?

gruß Andreas
#1589069
Lesenswert?

> Reicht es aus, diese PIN's solange auf low zu legen?

Dazu:

Chris R. schrieb:
> Zieht ein Controller die Leitungen zum Display auf Low
> und ein anderer auf High, hast du den Salat - der
> schwächere gibt nach (und büßt dadurch seine I/Os
> ein oder vernichtet sich komplett selber).

Besser ist es also, alle Controller halten ihr Display-interface auf 
INPUT (und ignorieren die anliegenden Pegel).

Was folgt:

Du drückst einen Taster. Damit wird Controller A gesagt "OK, du bist 
dran, gib deine Sachen aus". Das tut er dann.

Nun willst du sehen was Controller B macht, drückst also auf Taster B

Controller A und B arbeiten nun gegeneinander, da A nichts von deinem 
zweiten Tastendruck mitgekriegt hat.

Notlösung: Controller A wird vorher "abgeschaltet" per Tastendruck. 
Benutzerfreundlich ist das aber nicht (Ein Nutzer der das Abschalten 
vergisst, zerstört damit evtl beide Controller)

Lösung: Ein Businterface à la i²c. Alle Controller geben den zu 
zeigenden Text da drauf, ein Slave (Controller) fängt es ab und 
speichert es. Bei Tastendruck wird dann der jeweilige Displaypuffer ans 
Display gesendet.

Netter Nebeneffekt: Jeder Controller braucht dafür nur 2 Pins (SDA & 
SCL) zur Verfügung zu stellen, statt jetzt 4x Daten + RS + E + 
Tasteneingang

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren