PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega8 und LCD



mr.burns
27.02.2012, 22:08
Hallo,


ich habe einen Atmega32 programmiert, läuft mit externem Quartz auf 16 MHz (vom STK-600).
Habe damit ein HD44780 kompatibles LCD Display angesteuert. Mit dem Atmega32 läuft alles ohne Problem, das LCD stellt das dar was ich programmiert habe.
Nun habe ich einen Atmega8 und nutze dasselbe Programm wie für den Atmega32. Der Atmega8 bekommt auch denselben externen Takt von 16 MHz vom STK-600. Habe dieselben PINs von Port B genommen wie für den Atmega32 um das LCD anzusteuern, aber es erscheinen nur komische Zeichen auf dem Display.
Habe dann ein bisschen rumprobiert. Wenn ich den Atmega8 auf internen Oszillator (1 MHz) stelle und im Programm auch F_CPU auf 1000000UL einstelle klappt alles.
Wenn ich nun aber auf meinem STK-600 für externen Takt auch 1 MHz einstelle und die Fuses auf externen Takt (EXTLOFXTALRES_16KCK_64MS) stelle dann klappt die Ansteuerung des LCDs nichtmehr sondern es kommen nur komische Zeichen, obwohl die Taktfrequenz auch 1 MHz ist. Unterschied ist nur interner und externer Oszillator.
Habe nachgemessen, der Takt des STK-600 ist exakt 1 MHz.
Irgendwie will der Atmega8 den externen Takt nicht. Mit dem Atmega32 klappt ja alles mit denselben Einstellungen / PIN-Belegung etc.. Habe auch mehrere Atmega8 probiert um defekte AVRs auszuschließen, aber immer exakt dasselbe Ergebnis.
Kann mir jemand sagen woran das liegt?


Vielen Dank!

mr.burns
27.02.2012, 22:43
Hat sich bereits erledigt, beim Atmega8 sind PC6 und PC7 die Pins für den externen Takt. Kann also nicht Port B komplett für die Ansteuerung des LCDs nehmen.
Wenn ich Port D nehme klappt alles.

ePyx
28.02.2012, 06:53
Passiert mir auch häufig. Ist manchmal recht verwirrend, dass der Atmega8 nur 6 IOs an dem Port hat. ;)