www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD seriell nach Ulrich Radig


Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: hallowelt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.