Hallo, Habe ein LCD 16x2 an einem Atmega8 über das STK500 angeschlossen. Verwende die Beispielprogramme aus dem AVRGCC Tutorial. Hatte vor ein paar Monaten schon mal ein LCD 16x2 an einem Atmega8 und dem AVRISP MKII betrieben das auch super funktionierte. (mit dem gleichen Beispielprogramm aber AVR Studio 4) Bin jetzt auf das STK500 und AVR Studio 6 umgestiegen und jetzt funktionierts nicht so wie ich will... wie so oft :-) Habe ein Bild angehängt wo normalerweise nur in der ersten zeile "Test" und in der zweiten Zeile auch "Test" angezeigt werden soll. Bei jedem Reset wird ein anderer Text angezeigt und manchmal auch gar nichts. An was kann das liegen. Habe alle Anschlüsse vom Display überprüft und es liegt kein Kurzschluss vor. Gruß Dominik
Hast du an dem Beispielprog nur die eine Stelle von 'Hello World!' in Test geändert? Und schau mal, ob du nicht noch irgendwelche Delays oder Befehle anpassen musst.
Ja hab nur die Stelle von "Hello World!" in "Test" geändert. F_CPU 3686400 muss ich nicht ändern wenn ich keinen externen Quarz benütze oder? Mein ISP Clock ist auf 113,92kHz eingestellt.
Wenn ich kein externes Makefile benütze dann muss ich doch auch nicht dies anhängen oder? (MCU=atmega8) Das macht doch AVR Studio beim erstellen von einem Projekt selber. Was ist hiermit gemeint? // lcd-routines.c in SRC = ... Zeile anhängen
In welchem Kontext steht das denn? Und mit der Frequenz: "Standardmäßig" sind die Fuses (hfuse = 0xd9, lfuse = 0xe1) auf 1MHz eingestellt, dass wäre dann: "F_CPU 1000000", les aber am besten mal die Fuses aus und sag uns wie sie lauten. Grüße, Lucas
Anfänger schrieb: > F_CPU 3686400 muss ich nicht ändern wenn ich keinen externen Quarz > benütze oder? Halbwegs korrektes Timing kannst du bei der Einstellung aber nicht erwarten, da der interne Oszillator keine 3.7MHz hat.
Hab die Fuses ausgelesen... High = 0xD9 Low = 0xE1 hab daraufhin die Frequenz auf "F_CPU 1000000" gestellt aber der Fehler ist genauso wie vorher noch da.
Hast du die Leitungen für das LCD auch an die richtigen Pins angeschlossen? Wichtig ist, dass sie am selben Port hängen, wenn du den Queltext nicht veränderst. Schau vor allem, ob der R/S Pin deines Displays richtig verbunden ist.
Ja hab sie am PortD wie im Tutorial angeschlossen. Habe auch gerade alle nochmal nachgemessen und keinen Fehler gefunden. Werde jetzt nochmal ein neues LCD ausprobieren und schauen ob sich was ändert.
Hab jetzt auch nochmal ein neues Display ausprobiert aber hat sich nichts geändert.
holger schrieb: > Hier mal eine HEX Datei für dich zur Schaltungskontrolle. Tut mir leid wenn ich jetzt so blöd Frage aber was muss ich mit der Hex Datei machen??? Bin noch anfänger zum Thema uC Muss ich einfach die Hex Datei auswählen und übertragen??? Habs versucht manchmal ist nur eine Zeile weiß hinterlegt und manchmal beide...was sollte den passieren?
Eigentlich solltest Du sowas wie "Hello World" sehen,. denke ich mal. @Holger: Display an welchen Port? 4-Bit oder 8-Bit? Frequenz?
>Tut mir leid wenn ich jetzt so blöd Frage aber was muss ich mit der Hex >Datei machen??? Bin noch anfänger zum Thema uC > >Muss ich einfach die Hex Datei auswählen und übertragen??? Ja. >Habs versucht manchmal ist nur eine Zeile weiß hinterlegt und manchmal >beide...was sollte den passieren? Es sollte eigentlich "Line1" in der ersten Zeile und "Line2" in der zweiten Zeile zu sehen sein. Ich hab das für den ATMega8 kompiliert mit folgender Pinbelegung wie im Tutorial: RS PORTD4 E PORTD5 RW an Masse GND LCD_D4 PORTD0 LCD_D5 PORTD1 LCD_D6 PORTD2 LCD_D7 PORTD3
Anfänger schrieb: > hab daraufhin die Frequenz auf "F_CPU 1000000" gestellt aber der Fehler Falls du das mit einer "#define"-Anweisung gemacht hast, geht das schief, weil 1000000 nicht in eine 16-Bit Zahl passt.
1 | #define F_CPU 1000000UL |
wäre da passender.
>@Holger: Display an welchen Port? 4-Bit oder 8-Bit? Frequenz?
Natürlich 4Bit, PORTD siehe oben. Frequenz absichtlich 16MHz
und nicht 1MHz damit die delays auf jeden Fall passen.
Hab jetzt gerade nochmal alle Anschlüsse nachgemessen...lötstellen zusätzlich unterm mikroskop angeschaut...nochmal ein neues Display ausprobiert...einen neuen Atmega8 gesteckt... und habe immer noch das selbe problem. Werd Morgen mal einen Bekannten ein Display mitgeben der es mal ausprobieren soll. Aber danke trotzdem für eure Hilfe.
So, für alle Zweifler: Mal eben ein 2x16 Display per Jumper Wires angepappt. Quarz 10MHz. Steckte da halt grad drin. Das blind programmierte Programm reingebrutzelt. Also die HEX Datei aus dem Anhang. Anzeige: Line1 Line2
Kleine Anmerkung bevor ich schlafen gehe: Hängt da evtl. ein MAX232 an PD0 und PD1? Den musste ich bei meinem Board rausziehen damit es geht.
Hab jetzt das STK500 einmal an meinem alten PC über rs232 kabel und nicht am laptop über usb to serial prolific adapter angesteckt und wenn ich jetzt die Hex datei auf meinen mikrocontroller übertragen will bekomm ich zwei Fehler die ich mit dem gleichen Programm am Laptop nicht hatte.
So jetzt hab ich mal mein Programm mit dem AVR ISP MK2 übertragen und siehe es funktioniert... :-) Muss ich irgendwelche fuses,... beim stk500 ändern damit es funktioniert? Irgendwelche ideen? Danke
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.