Moin,
ich verzweifele gerade mit dem o.a. 2x16-Display.
Gegeben:
- AT Mega32, der das o.a. LCD im 4-bit-Modus ansteuern soll; alle 7
LCD-Pins hängen an Port D, JTAG und SPIEN sind nicht gesetzt, int. Osc 4
MHz
- AVR-GCC mit Fleurys LCD-Lib,
- Platine wurde x-mal überprüft und für i.O. befunden; LCD-Anschlüsse
haben einwandfreien Kontakt zu den entsprechenden µC-Pins.
- Software funktionierte mit anderen LCD; z.B. die bei Reichelt und dem
Pollin TC1602A-08.
- Habe aber leider keines dieser LCD zum Testen verfügbar.
- Mit demselben Ergebnis getestet mit 2 nagelneuen Mega32 und 2
nagelneuen LCD.
Problem:
- LCD initialisiert offensichtlich nicht richtig (schaltet ev. nicht in
den 4-Bit-Modus??).
- Nach dem Einschalten sind schwarze Klötze nur in der 1. Zeile zu
erkennen, in der 2. Zeile nichts, Cursor blinkt an Position 0.
- Bis zu 16 Zeichen lassen sich einmalig schreiben, aber sie werden
nicht korrekt dargestellt. Bei identischen Zeichen "aaaaaaa..."
erscheint nur "oooo..." auf dem LCD, bei unterschiedlichen Zeichen
"asdfgh..." nur oo<-o..", also ein o und ein Pfeil rechts.
- Bei einem weiteren Schreibbefehl (lcd_puts) tut sich nichts.
- Beim Positionieren mit lcd_gotoxy wird immer an die letzte Stelle
(x=15) gesprungen und dort das Zeichen o dargestellt - unabhängig von
den Parametern bei lcd_gotoxy.
- Manchmal wird bei unveränderter Software gar nichts dargestellt.
Hilfe ;-)
Danke und Gruß, Udo
Moin,
lcd.h und lcd.c von Peter Fleury bis auf die 100% korrekt definierten
Ports und die nachfolgenden LCD-Einstellungen unverändert übernommen:
...
#define XTAL 4000000
// Use 0 for HD44780 controller, change to 1 for displays with KS0073
controller.
#define LCD_CONTROLLER_KS0073 0
// @name Definitions for Display Size
#define LCD_LINES 2
#define LCD_DISP_LENGTH 16
#define LCD_LINE_LENGTH 0x40
#define LCD_START_LINE1 0x00
#define LCD_START_LINE2 0x40
#define LCD_START_LINE3 0x14
#define LCD_START_LINE4 0x54
#define LCD_WRAP_LINES 0
...
LCD_WRAP_LINES hat keinen Einfluss auf das Verhalten. Auswahl vom KS0073
führt leide4r auch zu nichts.
Timing stimmt; der µC läuft mit 4 MHz.
Main.c besteht nur aus ein paar LCD-Befehlen, die testweise variiert
werden:
...
PORTD |= (1<<PORTD5);
lcd_init(LCD_DISP_ON);
//lcd_puts ("abb");
lcd_gotoxy (4,0);
//lcd_putc('s');
lcd_puts ("hoiut");
while(1);
...
Über PORTD5 wird das backlight eingeschaltet.
Die Wartezeit bis zum lcd_init nach Einschalten der Spannung hat
zwischen 5 und 1000 ms keinen Einfluss auf das Verhalten.
Gruß, Udo
Zu lange Leitungen? Eigene oder fremde Einstreuungen? Zu wenige
Kapazitäten verteilt? Wackelkontakt oder kalte Löstelle? Macht die
Versorgungsspannung schlapp? Falls greifbar häng doch mal ein Oszi an
die Leitungen.
Moin,
g457 schrieb:> Zu lange Leitungen? Eigene oder fremde Einstreuungen? Zu wenige> Kapazitäten verteilt?
1,5 m Flachbandkabel. Nichts 'Strahlendes' in der Nähe. Der µC hat seine
Kapazitäten, der Wannenstecker für das LCD-Kabel auch.
> Wackelkontakt oder kalte Löstelle?
Zigfach geprüft, auch nachgelötet.
> Macht die Versorgungsspannung schlapp?
Superstabil, keine Störungen.
> Falls greifbar häng doch mal ein Oszi an die Leitungen.
Hätte ich auch selbst draufkommen können...
Am LCD liegen dieselben Signale an wie am µC. Beim Schreiben eines
Zeichens in einer while-loop (1 Mhz-Takt) zeigen RS, Rw, E ein recht
sauberes Rechteck mit leichten Überschwingern an den Flanken. D4 bis D7
sehen dagegen ziemlich wüst aus; irgendwie ein Rechteck mit überlagerten
Signalen mit verwaschenen Flanken. Ich mag aber nicht ausschließen, dass
hier mein 25 Jahre altes Voltcraft-Billig-Oszi an seine Grenzen stößt.
Gruß, Udo
Hi
>1,5 m Flachbandkabel.
Das ist sehr sportlich.
>D4 bis D7 sehen dagegen ziemlich wüst aus; irgendwie ein Rechteck mit>überlagerten Signalen mit verwaschenen Flanken.
Wundert mich nicht.
MfG Spess
Moin,
danke für die Hinweise.
Mit den Delays hatte ich schon kräftigst herumgespielt; keine Besserung.
Das mit dem Kabel werde ich noch zusätzlich testen. Allerdings hatte ich
damit bei gleicher Hardware und gleicher Ansteuerung sowie anderen LCD
(inkl. Pollin TC1602A-08) bislang keine Probleme. Bei mir und anderen
läuft diese Installation mit bis 2 m Länge unproblematisch im Auto,
wobei das Flachbandkabel in meinem Fall 1x durch das Kabelgewühl des
zentralen Sicherungskastens und neben einer PWM-Leistungsverkabelung
verlegt wurde. Ich muss allerdings zugeben, dass es mich schon gewundert
hat, dass das dauerhaft (nun schon 3 Jahre) funktioniert ;-)
Es sind zudem nur die Datenbits D4-D7 betroffen. Da tut sich ja, wenn
ich die Ansteuerung richtig verstanden habe, etwas mehr auf der Leitung
als bei RW, RS und E. Letztere sind ja sauber.
Gruß, Udo
Moin,
es funktioniert nun; mit unveränderter Software und leicht geänderter
Hardware.
Es war das Kabel. Allerdings nicht die Länge (funktioniert im Moment mit
den 1,5 m (- 2 cm) einwandfrei), sondern ein 'minimaler Kurzschluss'
zwischen 2 Adern des Flachbandkabels im Bereich des Steckers. Muss wohl
wegen einer Ungenauigkeit beim Pressen des Steckers passiert sein.
Entdeckt wegen des Hinweises auf ein zu langes Kabel. Kurzes versucht ->
funktioniert -> langes seziert -> 2 cm gekürzt und neu verpresst ->
läuft.
Die Signale D4-7 sehen immer noch nicht besser aus. Liegt wohl mehr an
dem alten Oszi. Was mich zum nächsten Thema bringt:
Kann mir jemand ein gutes digitales Oszi empfehlen?
Nee, ok, war ein Scherz ;-)
Danke für die Hilfe und Gruß,
Udo