Hallo zusammen, ich habe eine interessante Frage und zwar, ich habe auf meine platine einen ATmega32, und möchte ein (2x16)HD77780 kompatibles LCD ansteuern. Das LCD ist am Port D vom MC angeschlossen, wobei meine UART Schnittstelle (Rx = PD0 und Tx = PD 1)auch am Port D ist. Das LCD ist richtig angeschlossen und funktonniert auch gut. Das Echo kann ich ohne Problem mittels HTerm durchführen. Wenn ich jetzt Daten über UART senden und empfangen, und GLEICHZEITIG auf dem LCD auch sehen möchte, dann kriege falsche Daten sowohl bei HTerm als auch auf dem LCD. Frage : liegt das vielleicht dass UART und LCD die Pins RX und Tx teilen, oder brauche ich eine exakte Taktfrequenz bzw Baudrate. Vielen Dank im Vorraus.
Das könnte vielleicht ein Prblem sein, man kann aber das Problem softwaremässig lösen.
ROTFL, das ist der Brüller: >: >Frage : liegt das vielleicht dass UART und LCD die Pins RX und Tx teilen >: Wieso sollte denn eigentlich ein Mikrocontroller mit mehr als 1 Pin (also, ok, ich geb noch VCC und GND dazu) produziert werden, wenn alles an denselben Pin ageschlossen werden kann ;-) Im Ernst: JA, da liegt das Problem. Wie willst du denn verhindern, dass einer ein Zeichen sendet, wenn du gerade am werkeln am Display bist? Dann kommt dazu, dass dem Wesen nach ein TX-Pin ein Ausgang ist, genauso wie die meisten Steuersignale für das LCD. Wenn du schon nicht mehr Pins frei hast, warum verwendest du nicht den 4-Bit Modus?
Reda wrote: > Frage : liegt das vielleicht dass UART und LCD die Pins RX und Tx > teilen, oder brauche ich eine exakte Taktfrequenz bzw Baudrate. Beides. Man kann nicht einfach irgendwelche Pins zusammen pappen, ohne zu verstehen, was darauf passiert. Die UART kann man in keinem Fall mit was anderem parallel schalten. Aber z.B. LCD und SPI geht gut. Solange das /CE des Slave high ist, ignoriert er alles auf den SPI-Leitungen. Solange E vom LCD low ist, ignoriert es alles auf den Datenleitungen. Daher kann man SCK,MOSI,MISO ohne Konflikte mit D0..D7 zusammen legen. Nur /CE und E müssen extra sein. Peter
Hallo lkmiller und Peter Dannegger, ich habe doch das LCD in 4-Modus angesteurt, mir war das Problem am Anfang unbewusst, als ich die Schaltung entworfen habe, das ist nämlich eigene Platine. Die Pinbelegung für das LCD habe ich eigentlich von der Seite hier übernommen, siehe : http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung Hier ist ein Schnitt davon : Anschluss an den Controller Pin #-LCD Pin-µC 1 Vss GND 2 Vcc 5V 3 Vee GND oder Poti (siehe oben) 4 RS PD4 am AVR 5 RW GND 6 E PD5 am AVR 7 DB0 offen 8 DB1 offen 9 DB2 offen 10 DB3 offen 11 DB4 PD0 am AVR 12 DB5 PD1 am AVR 13 DB6 PD2 am AVR 14 DB7 PD3 am AVR von daher ich bin nicht 100% schuld :) Danke für eure Antworten
@ Reda ja, aber da steht nix davon, dass man den UART dann auch noch verwenden soll ;-) Und in lcd-routines.c: : // Die Pinbelegung ist über defines in lcd-routines.h einstellbar :
@ lkmiller Das stimmt, man soll nicht die beiden Pins für URAT Schnittstelle benutzen !!! Ich meinte ein Hinweis neben der LCD-Pinbelegung wäre nicht schlecht gewesen, weil eine serielle Schnittstelle ( wie z.b UART ) kann man immer gebrauchen. Ich habe schon eine Lösung und zwar, ich will jetzt die Pins 11 und 12 von LCD (die jetzt mit uart verbunden einfach abkratzen) und mit der Pins PD6 und PD7 am MC verbinden, weil ich PD6 und PD7 noch frei habe. d.h. softwaremässig wird nicht aufwendig oder ? ich werde dann nur wenig am gesamten Programm ändern. Gruss
Reda wrote: > Ich habe schon eine Lösung und zwar, ich will jetzt die Pins 11 und 12 > von LCD > (die jetzt mit uart verbunden einfach abkratzen) und mit der Pins PD6 > und PD7 am MC verbinden, weil ich PD6 und PD7 noch frei habe. Schlechte Idee. Du solltest schon darauf achten, dass die vier Datenleitungen wenigstens an einem kompletten Nibble hängen. > d.h. softwaremässig wird nicht aufwendig oder ? ich werde dann nur wenig > am gesamten Programm ändern. Unnötig aufwändig. Ich würde sowas vorschlagen: PD0 und PD1 für USART PD2 und PD3 für die LCD-Steuerleitungen PD4-PD7 für die LCD-Datenleitungen So brauchst du an der Software fast nix zu ändern und kommst an der RS232 vorbei.
Hallo Philipp, Philipp Burch wrote, >Schlechte Idee. Du solltest schon darauf achten, dass die vier >Datenleitungen wenigstens an einem kompletten Nibble hängen. Das muss aber nicht sein. Die 4 Datenleitungen kannst du sogar einzeln mit irgendwelchen Pins an irgendwelche Port verbinden, dafür brauchst du ein geeignetes Programm dafür. Ich habe die beiden Datenleitungen DB4 und DB5 von LCD, wie gesagt, mit den Pins PD6 und PD7 am selben Port D von MC vebunden. Das LCD sowie die UART Schnittstlle funktionnieren wieder sehr gut. Nur wenn ich die Daten über die UART senden bzw. empfangen und gleichzeitig das LCD ansteurn will, kriege ich einmal ein Buchstabe nur bei HTerm und nicht beim LCD, und das nächste Buchstabe auf dem LCD und nicht beim HTerm. Ich muss irgendwas an meinem Programm ändern! Bin noch dabei :) Gruss
Reda wrote: > Hallo Philipp, > > Philipp Burch wrote, >>Schlechte Idee. Du solltest schon darauf achten, dass die vier >>Datenleitungen wenigstens an einem kompletten Nibble hängen. > > Das muss aber nicht sein. Muss nicht. Aber wie du selbst am eigenen Leib erfährst ist es wesentlich einfacher wenn man es tut.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.