Forum: Mikrocontroller und Digitale Elektronik LCD-Display(4x20,HD44780) zeigt nach Umstellen auf externen Quarz nur Hieroglyphen


von Walter K. (satyrix)


Lesenswert?

Hallo Leute,
mein LCD-Display(4x20,HD44780)funktioniert bei Verwendung des internen 
1MHz-Takt am ATMega16 korrekt. Nach Umstellen auf externen Quarz(16MHz) 
zeigt das Display nur noch Hieroglyphen an, selbst wenn der F_CPU-Wert 
in der lcd.h-Datei auf 1000000 geändert wird, genauso ist es bei anderen 
Werten, z.B. 8000000. Nach Rückstellen auf den internen Controllertakt 
funktioniert alles wieder korrekt. Was kann die Ursache sein??
Vielen Dank für die Hilfe im Voraus!!
Walter

von Thosch (Gast)


Lesenswert?

Du betireibst das Display im Write-Only (Fire-and-forget)-Mode
also ohne Abfrage des Busy-Flags vor jeder Ausgabe?

Dann mußt Du alle Deine Wartezeiten anpassen, denn offensichtlich
überfährst Du das Display mit 16 Mhz vom Timing her.
Je nachdem, welche Routinen Du verwendest sind die nicht zwingend
von F_CPU abhängig gemacht...

Gruß,
Thosch

von Walter K. (satyrix)


Lesenswert?

Hallo Thosch,
vielen Dank für den Tipp. Ich habe dann den F_CPU-Wert auf 16000000 
gestellt und alle LCD-Ausführungszeiten (10 Stück)in der lcd-routines.h 
auf den 16 fachen Wert erhöht(Tabelle zeigt Ursprungswerte). Es ändert 
jedoch nichts an den Hieroglyphen.

//////////////////////////////////////////////////////////////////////// 
////////
// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)

#define LCD_BOOTUP_MS           15
#define LCD_ENABLE_US           20
#define LCD_WRITEDATA_US        46
#define LCD_COMMAND_US          42

#define LCD_SOFT_RESET_MS1      5
#define LCD_SOFT_RESET_MS2      1
#define LCD_SOFT_RESET_MS3      1
#define LCD_SET_4BITMODE_MS     5

#define LCD_CLEAR_DISPLAY_MS    2
#define LCD_CURSOR_HOME_MS      2

//////////////////////////////////////////////////////////////////////// 
////////

Was kann noch die Ursache sein??
Danke im Voraus!!
Walter

von Thosch (Gast)


Lesenswert?

Walter Klevenz schrieb:
> Was kann noch die Ursache sein??

Das ist so ganz ohne Quellen schwer nachzuvollziehen...

Maine Glaskugel ist grade defekt ;-)

Ich würde aber darauf tippen, daß mit dem schnelleren Takt
die Setup- und Hold- Zeiten des Interface-Timings verletzt werden.
Gerade bei der Erzeugung des E-Signals ist es wichtig, das Timing
gemäß Datenblatt einzuhalten!

Wenn das Timing des E-Signals nicht paßt, kannst Du nach oder vor dem 
Zugriff beliebig lange Wartezeiten einbauen ohne daß es hilft.

Gruß,
Thosch

von Klaus (Gast)


Lesenswert?

@ Walter Klevenz

#define F_CPU 16000000UL
vor
#include <avr/delay.h>
einfügen sonst wird 1MHz eigestellt für Delay.

Wie du den Controllertakt einstellst scheinst du ja zu wissen.
Also auf 16MHz.

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.