Forum: Mikrocontroller und Digitale Elektronik LCD seriell nach Ulrich Radig


von Dietmar P. (dietmar2)


Lesenswert?

Hallo,

habe mir das serielle LCD von Ulrich Radig nachgebaut.
Außer der Zeile eins mit fast allen Dots wird nichts angezeigt.

Als µC verwende ich eine Atmega32 ohne Quartz, habe deshalb nach 
verschiedenen Versuch in der USART.h bei ifndef ... die 16 MHz auf 1 MHz 
gesetzt.
Ist das ein Problem?
Ferner habe ich versuchsweise in der main.c nocht eine interne Funktion 
init() eingefügt und dort den PORT C auf DDRC = 0xff als Ausgang gestzt.
Keine Veränderung.

Das Backlight geht mal an, oder bleibt aus, wenn ich die 
Versorgungsspannung wegnehme bzw. dranhänge.

Beim Compilieren, Linken und Flashen bekome ich keine Warnung, keinen 
Fehler.

Habe schone alle Leiterbahnen x-mal geprüft, kein Fehler.

Einziger Unterschied zum Original ist der Verwendung des 
Schieberegisters 74HC164N anstatt 74AC164N. Soll aber angeblich keine 
Problem sein.

Kann mir jemand helfen?

von hallowelt (Gast)


Lesenswert?

Also das Backlight hat ja eigentlich nichts mit der Logik zu tun...wenn 
du alle Dots dunkel siehst, dann drehe erstmal am Kontrast rum

von Karl H. (kbuchegg)


Lesenswert?

Dietmar P. schrieb:

> Als µC verwende ich eine Atmega32 ohne Quartz, habe deshalb nach
> verschiedenen Versuch in der USART.h bei ifndef ... die 16 MHz auf 1 MHz
> gesetzt.
> Ist das ein Problem?

Du solltest aber auch dem Rest des Codes deine 1Mhz zugänglich machen.
Dazu in den Projekteinstellungen die 1Mhz eintragen. Dann wird auch 
F_CPU automatisch mit dem richtigen Wert besetzt und dann ist der 
#ifndef nur noch reine Formsache.

von Dietmar P. (dietmar2)


Lesenswert?

Das mit der Logik stimmt zwar, aber ich meinte das könnte irgendwie 
zusammen hängen.
Die Dots sind in normaler Helligkeit dargestellt, aber wie gesagt nur in 
der Zeile eins und auch nicht vollständig, z.B. fehlt die Dot-Zeile 5. 
Wenn ich am Kontrast rumschraube wird die gesamte Darstellung flauer 
oder dunkler.

von Dietmar P. (dietmar2)


Lesenswert?

Ok., habe oben in der main.c eingetragen:

#ifndef F_CPU
#define F_CPU 1000000UL     // Takt CPU wird auf 1Mhz gesetzt
#endif

Leider auch kein Erfolg.

von Karl H. (kbuchegg)


Lesenswert?

Dietmar P. schrieb:
> Ok., habe oben in der main.c eingetragen:
>
> #ifndef F_CPU
> #define F_CPU 1000000UL     // Takt CPU wird auf 1Mhz gesetzt
> #endif
>
> Leider auch kein Erfolg.

und wer sagt dir, dass das alles ist?
Da gibt es sicherlich noch ein eigenes File mit den LCD Routinen, oder 
etwa nicht? Die sollten auch wissen, dass alles mit 1Mhz läuft, denn 
insbesondere das Initialisierungstiming ist kritisch.

Was ist so schwer daran, die 1Mhz in den Projekteinstellungen 
einzutragen. Hast du Angst davor, dass dann plötzlich alle am Projekt 
beteiligten C-Files automatisch mit der richtigen Taktfrequenz versorgt 
werden würden und Änderungen nur an einer Stelle notwendig wären? So 
nach dem Muster: Warum einfach, wenns auch umständlich geht.

Vielleicht löst es dein Problem nicht, mag sein. Aber es ist zumindest 
ein Schritt in die richtige Richtung.

von Dietmar P. (dietmar2)


Lesenswert?

Danke für die weitere Antwort.

Dann muss ich nochmal nachfragen, ich stehe mit den 
"Projekteinstellungen"
auf dem Schlauch. Wo finde ich denn etwas?

Habe bis nur kleine C-Prgrämmchen für den Atmega geschrieben, da hatte 
ich keine Projekteinstellungen separat, eben nur das ifndef im main.c.

von Karl H. (kbuchegg)


Lesenswert?

Du verwendest AVR-Studio?

Menü: Project
Menüpunkt: Configuration Options

Im Dialog, gleich im ersten Fenster "General" ziemlich weit unten: 
"Frequency". Dort 1000000 eintragen


Wenn du kein AVR-Studio benutzt, dann wird es im Makefile irgendwo einen 
Eintrag F_CPU geben. Dort kommen deine 1000000 hin.

von Dietmar P. (dietmar2)


Lesenswert?

Nein, kein AVR-Srtudio, sondern Linux avrdude.
Muss ich mal schlau machen, wie das im makefile syntaktisch geschrieben 
wird. Ich dachte im main.c, wie ich es oben gezeigt hatte, genügt das.

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.