Hallo, ich weiß nicht mehr weiter. Ich versuche jetzt schon seit mehreren Tagen ein LC-Display an einem Atmega16 zu betrieben, aber ich schaffe es nicht das Display zu initialisieren. Der Grund, warum ich nicht mehr weiter weiß ist der, das dass Display an einem Atmega8 einwandfrei funktioniert. Auch in der Simulations-Software „Proteus 7“ Funktioniert das Display, egal ob Atmega8 oder 16. Um das Display anzusteuern, verwende ich die lcd-rutines aus dem AVR-GCC-Tutorial. Das Display ist das LCD162 von Reichelt im dem Controller KS0070B. Gruß Daniel
Was es sein könnte: Wenn du das Display am PortC betreibst, musst du den JTAG ausschalten. Macht man mit den Fuses. Falls es das nicht war: Verwendest du das gleiche Programm, wie für deinen Mega8, und auch die gleiche Pinbelegung zum Display? Stimmt die Taktfrequenz des Mega16? MfG Steven
Gibt es zusätzlich für C einen Befehl, womit man den JTAG ausschalten kann? In PonyProg habe ich sie deaktiviert. Bisher funktioniert es immernoch nicht.
Habe jetzt noch mal die Schaltung aus dem Tutorial aufgebaut. Selbe Pin-Belegung, selber Quelltext und mit der internen Frequenz des Atmega16 von 1MHz. Die Frequenz in der Header-Datei habe ich auf 1Mhz angepasst. Das LCD ist jetzt auch wieder an "Port D" angeschlossen, wie im Tutorial. Pin-Belegung und Programm sind mit dem vom Atmega8 identisch. Bisher tut sich immernoch nichts.
Danke das du dir den Quelltext mal ansehen möchtest. Hier ist er. Nur noch mal zur Verständmisfrage. Wie sollten denn die Fuse-Bits bei PonyProg aussehen? Habe bei... JTAGEN; BOOTSZ1; BOOTSZ0; SUT0; CKSEL0 einen Häkchen, alle anderen sind frei
Daniel wrote:
> Danke das du dir den Quelltext mal ansehen möchtest. Hier ist er.
1 | #define LCD_PORT PORTD
|
2 | #define LCD_DDR DDRD
|
3 | #define LCD_RS PD4
|
4 | #define LCD_EN PD5
|
5 | // DB4 bis DB7 des LCD sind mit PC0 bis PC3 des AVR verbunden
|
Sehe ich das richtig? Die Daten-Pins 4 bis 7 des LCD sind an PC0 bis PC3, RS und EN sind aber an Port D? Dann musst du noch ein bischen was anpassen. Lösung siehe z.B. hier: Beitrag "Re: LCD nicht nur für einen Port in C"
>JTAGEN; BOOTSZ1; BOOTSZ0; SUT0; CKSEL0 >einen Häkchen, alle anderen sind frei War das bei Pony nicht so: Da wo ein Häkchen ist wird eine Null gebrannt. Dann wäre JTAG aktiviert.
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.