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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.