Forum: Mikrocontroller und Digitale Elektronik Ein Display für mehrer Controller


von Andreas R. (08fresh15)


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

von K. J. (Gast)


Lesenswert?

Ja das würde gehen den Datenbus kannst du durch verbinden bei R/S, E , 
CS musst du dir dann was überlegen vielleicht ne Steuerleitung die 
signalisiert das ein µC gerade schreibt/liest.

von Chris R. (hownottobeseen)


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

von Andreas R. (08fresh15)


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?

von Michael U. (amiga)


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

von Andreas R. (08fresh15)


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

von Phantomix X. (phantomix)


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

von Andreas R. (08fresh15)


Lesenswert?

Danke für die Hinweise. Dann werde ich wohl nicht umher kommen, mich mit 
den Bussytemen anzufreunden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.