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?
Also das Backlight hat ja eigentlich nichts mit der Logik zu tun...wenn du alle Dots dunkel siehst, dann drehe erstmal am Kontrast rum
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.
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.