Diesen Code habe ich von einer Internetseite kopiert und auf mein
Projekt angepasst. Alles hat funktioniert. Doch jetzt habe ich bemerkt
das die Taktfrequenz auf 10Mhz eingestellt ist. Mein Atmega16 verwendet
aber die interne Taktquelle.
Als ich im Bascom Code die Frequenz geändert habe, hat das Display nur
noch wirre Zeichen angezeigt.
Woran kann das liegen?
Vielen Dank
jannik
Dann sieht es wohl so aus, als ob die LIB das GLCD ein klein wenig zu
schnell ansteuert.
Wenn die Wartezeiten auf 10Mhz gerechnet wurden, dein Mega aber nur 8Mhz
macht, dann läuft das darauf hinaus, dass alle Wartezeiten 20% zu lang
sind. Zu lang ist meistens kein Problem.
Stellst du aber auf 8Mhz um, also das was der Mega wirklich macht, dann
stimmen die effektiven Wartezeiten mit den programmierten überein. Und
wenn du Pech hast, hat sie der ursprüngliche Programmierer der Lib etwas
zu knapp dimensioniert.
Eventuell hast du noch Glück und du kannst mit zusätzlichen Config
Variablen die LIB in ihren Wartezeiten beeinflussen und die dort ein
wenig langsamer stellen.
Hört sich nach einem Timing-Problem an. Du solltest sicherstellen, dass
Dein Takt zur $crystal Anweisung passt. An einer Kopie der lib kannst Du
den Parameter @genus suchen und den Wert nach oben um +-1 (max. 2) nach
unten oder oben anpassen. Diese veränderte Library bindest Du über $lib
ein.
Vielen Dank für die Antworten. Ich hab mir die LIB mal angschaut,
versteht aber nicht viel davon, aber @genus kommt viermal vor. Welchen
Wert soll ich wie ändern?
Jannik G. schrieb:> Mein Mega16 hat doch nur 1Mhz interne Taktfrequenz, oder?
Datenblattleser wissen mehr über die Bauteile die sie verwenden :-)
Dein Mega16 kann 1, 2, 4, und 8Mhz mit dem internen RC-Oszillator.
Wieviel dein ganz persönliches Exemplar zur Zeit macht, kannst nur du
wissen, weil du das in deinem Brennprogramm eingestellt hast (oder auch
nicht eingestellt hast, dann macht er 1Mhz).
Auf jeden Fall aber sollte die $CRYSTAL Angabe tunlichst mit dem Wert
übereinstimmen, den der reale Mega16 auch tatsächlich verwendet. Wenn
der mit 8Mhz läuft, du aber bei $CRYSTAL 1Mhz angegeben hast, würde das
zb den Effekt schon erklären.
Also wärs eine extrem gute Idee, erst mal abzuklären auf welche Frequenz
der µC eingestellt ist.
@Karl Heinz Buchegger
Vielen Dank
Ich habe meinen Atmega16 jetzt von 1Mhz auf 8Mhz gestellt und es
funktioniert. Die $CRYSTAL Angabe habe ich auch auf 8MHZ.
jannik