Hi,
Der UART ist zB nicht mehr mit einem Assembler-Befehl erreichbar sondern man muß vorher die Zieladresse in ein temporär benutztes Register laden und dann mit sts (Store to SRAM) das Byte in die Speicherstelle legen. Beim m8 geht das mit einem Maschinenzyklus mit dem out-Befehl.
Der m48/88/168/328/644/... hat also nicht nur eine höhere Geschwindigkeit wegen den möglichen 20MHz sondern auch Nachteile wegen der zusätzlich vorhandenen Register. Wenn man Pech hat und viele Sachen zusammentreffen kann er also mit 20MHz langsamer sein als ein m8 mit seinen 16MHz. Es ist immer ein abwägen der Vor- und Nachteile
Gruß
Dino
das könnte evtl daran liegen das beim m168 gegenüber dem m8 einige IO-Register nicht mehr IO-mapped sondern Memory-mapped sind. Man benötigt also andere Assembler-Befehle um sie anzusprechen. Es könnte sich dadurch also zufällig das Timing positiv für das LCD verändern. Um das aber rauszubekommen müßte man alles genau unter die Lupe nehmen.Bei mir läuft das Pollin Teil mit einem M168 und 18,432MHz ohne Probleme
und ohne an einer Lib herumzuschrauben.
Der UART ist zB nicht mehr mit einem Assembler-Befehl erreichbar sondern man muß vorher die Zieladresse in ein temporär benutztes Register laden und dann mit sts (Store to SRAM) das Byte in die Speicherstelle legen. Beim m8 geht das mit einem Maschinenzyklus mit dem out-Befehl.
Der m48/88/168/328/644/... hat also nicht nur eine höhere Geschwindigkeit wegen den möglichen 20MHz sondern auch Nachteile wegen der zusätzlich vorhandenen Register. Wenn man Pech hat und viele Sachen zusammentreffen kann er also mit 20MHz langsamer sein als ein m8 mit seinen 16MHz. Es ist immer ein abwägen der Vor- und Nachteile
Gruß
Dino