Forum: Mikrocontroller und Digitale Elektronik Keine anzeige mit ATmega8 (LCD Display 8x24 mit M50530)


von Gulliver (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

habe die gleiche LCD/code wie Beitrag "LCD Display 8x24 mit M50530"
Allerdings funktioniert es bei mir nicht so wie es soll.

Also
1. Benütze den Code von  Daniel Jelkmann
2. Wenn ich das Samsung LCD mit ATmega8 betreibe bekomme ich nur 2 1/2
Balken wie im Bild LCD_Balken.JPG, und passiert auch nichts weiter.
3. Habe ATmega32 auf mein STK500 gesteckt, dann bekam ich auch nur
Balken wie im Bild LCD_Balken.JPG
4. Jetzt das Fenomen: so ungefär nach 1 min. kommen die Texte auf dem
Bildschirm nach dem ich den STK500 mit ATmega32 neu gestartet habe.
LCD_text_ATmega32.JPG

Dass verstehe ich nicht, konnte auch nicht ganz den Fehler ausmachen,
da es doch mit ATmega32 funktioniert (nach 1min. zwar) aber mit ATmega8
überhaupt nicht....


Frage 1: Warum funktioniert es nicht mit ATMega8? (ziel ist ATmega8)
Frage 2: Warum braucht das LCD/ATmega32 so lange mit dem Text?
Frage 3: ist es vielleicht die Taktfrequenz?
Frage 4: Wie kann ich was endern damit es funktioniert?

Habe fast nichts am Kode geändert ausser am Frequenz.
#define F_CPU         1000000    /* Takt-Frequenz in MHz */


// wartet die angegebene Zeit in Millisekunden
// XTAL_CPU muss entsprechend gesetzt sein
// (benötigt delay.h)
//extern void delay(unsigned int ms);
#define delay(ms)    for (unsigned int i = ms; i > 0; --i)
_delay_loop_2(250*F_CPU);
                     //_delay_loop_2(F_CPU / 4000);
//              _delay_loop_2(XTAL_CPU / 4000);
//              _delay_loop_2(250*F_MCU);

im Makefile

von Kachel - Heinz (Gast)


Lesenswert?

Sehe ich doppelt?
Neee: Beitrag "Fenomen mit LCD Display 8x24 mit M50530"

zu 1: Du benutzt... Besser wäre, Du würdest verstehen und machen als nur 
zu benutzen. Dazu wäre es vielleicht sinnvoll, etwas kleiner zu beginnen 
und Dir das KnowHow selbst zu erarbeiten, es schadet nichts, wenn man in 
der Lage ist, seine Fehler selbst zu finden.

Zu 2: Diese Balken sind das Zeichen dafür, dass das Display seinen 
Selbsttest gemacht hat, aber vom Controller noch nicht initialisiert 
wurde.

Zu 3: Das kann viele Ursachen haben. Siehe Punk 1

Zu 4: Dann läuft der AVR vermutlich mit einer anderen Taktfrequenz als 
Deine Routinen (bzw. die Routinen von Daniel Jelkmann) erwarten. Das 
könnte an falschen vereinbarten Konstanten liegen. Da ich aber nicht in 
C programmiere, sondern in ASM, habe ich mir Deinen Quelltext nicht 
angesehen.

Zu Frage 1: Weil vermutlich Dein Programm nicht stimmt. Oder weil Du 
einen Verdrahtungsfehler gemacht gast.

Zu Frage 2: Weil das Timing nicht stimmt. Vermutlich werden falsche 
Startwerte für das Delay berechnet weil die Konstante für die 
Taktfrequenz falsch ist oder fehlt.

Zu Frage 3: Vermutlich ja.

Zu Frage 4: Meiner Meinung nach sollte man nur Code benutzen, den man 
auch versteht. Du kannst es am Besten ändern, indem Du lernst. Lernen 
geht am Besten an kleineren überschaubareren Projekten, man kann nicht 
als Neuling mit großen Projekten beginnen, das bringt keinen Lernerfolg, 
das ist Herumgeeiere.

Ich habe diese LCDs in mehreren Projekten mit verschiedenen AVRs und 
verschiedenen Taktraten im Einsatz und habe keine Probleme damit. 
Programm und LCD-Routinen sind in ASM selbstgeschrieben.

Hat nicht Daniel Jelkmann darauf hingewiesen, dass seine Routinen nicht 
die eierlegende Wollmilchsau sind, sondern nur als Anregung für eigene 
Projekte dienen sollen? - Oder habe ich da was falsch verstanden??

Also nimm das Datenblatt des LCDs, analysiere die LCD-Routinen, verstehe 
die Zusammenhänge und schreibe Dir Routinen, die unter Deine Bedingungen 
funktionieren.

KH

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.