Forum: Mikrocontroller und Digitale Elektronik LCD und UART am selben Port


von Andreas Oberleitner (Gast)


Lesenswert?

Hallo!

Ich hab einen ATmega8 mit LCD Display an Port D (da ich die Platine
nicht ändern will, kanns nicht Port B sein). Wenn ich jetzt noch
zusätzlich die serielle Kommunikation verwenden will, ist das durch
dementsprechende Softwareänderung überhaupt möglich? Hat jemand sowas
schon gemacht?

lg
Andi

von Stefan Kleinwort (Gast)


Lesenswert?

Poste mal die Schaltung. Welches Display ist es? Vielleicht kannst Du
das Display im 4-Bit-Modus betreiben oder seriell, damit die UART-Pins
freiwerden.

Stefan

von Andreas Oberleitner (Gast)


Lesenswert?

Es handelt sich um ein HD44780-kompatibles Display, wie im Tutorial. Die
Initialisierung stammt vom CodeWizard von CodeVision, müsste also im
4Bit Modus laufen. Hier sind dann insgesamt 7 Pins des Prozessors
belegt.

Andi

von Sebastian Wille (Gast)


Lesenswert?

Hi,

wenn die UART-Pins sich die Datenpins des LCD teilen, müsste es gehen.
Problematisch ist es nur, wenn es die Steuerpins sind, da könnte das
LCD meinen, ein Befehl wird gesendet, wenn am UART was passiert.

Sendest Du aber keine Befehle per Steuerpins an das LCD, kannst Du auf
den Datenpins machen, was Du willst.

Sebastian

von Andreas Oberleitner (Gast)


Lesenswert?

Ja, das ist ja das Problem. Die Steuerpins hängen am Pin 0 bis 2 (RS,
R/W, Enable) vom Port D, genau dort wo der RxD (Pin 0) und TxD (Pin 1)
des mega8 liegt. Die Datenpins hab ich an den Pins 4-7 vom Port D
hängen.
Vielleicht sollte man das Display mittels Enable irgendwie wegschalten,
wenn man UARTet, und umgekehrt. Mal ausprobieren...

Andi

von Stefan Kleinwort (Gast)


Lesenswert?

Sehe ich als sehr schwierig an, das ohne Layoutänderung zu machen.
Du kannst zwar per TXD senden, ohne dass das Disply beeinträchtigt
wird. Aber wenn Du aufs Display ausgibst, wackelt der TXD-Output der
RS232, was Pseudodaten auf der seriellen Schnittstelle verursachen
kann.

Noch schlimme rist es mit der RXD-Leitung: für die RS232 musst Du sie
als Eingang (am mc) konfigurieren, für das lcd als Ausgang. Du hast
also einen Kurzschluss zwischen RS232-Treiber und mc, wenn Du fürs LCD
konfigurierst.

Wäre vielleicht ein Software-UART eine Lösung für Dich? Dann kannst Du
als RXD/TXD beliebige Pins nehmen. Ansonsten sehe ich keine andere
Möglichkeit außer Fädeln.

Stefan

von Andreas Oberleitner (Gast)


Lesenswert?

Software-UART hört sich sehr verlockend an. Gibts hier fertige Module,
und wie aufwändig wird die Geschichte dann?

Danke jedenfalls für den Tipp!!

Andi

von Stefan Kleinwort (Gast)


Lesenswert?

Ich selbst habe das bisher nur auf einem Nicht-AVR gemacht, kann Dir
also nicht weiterhelfen. Ich habe hier aber schon öfters drüber
gelesen, schau mal die Code- oder Linksammlung durch.

Oder frag Peter Danegger, der hat schon alles mal programmiert ;-)

Hardwareseitig bist Du nicht festgelegt, d.h. der RS232-Treiber soll
irgendwo extern aufgbaut werden?

Stefan

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.