Also war es ein Timing problem.
Unter anderem genau dafür ist das Bbusyflag da!
Entweder R/W auf GND und und das LCD garantiert langsam genug
ansprechen, so daß es auch bei ungünstiger Versorgugsspannung noch
reicht, oder das busyflag abfragen.
Helmut schrieb:
> Kann ich eigentlich auch einen anderen Wert als 1/4/8 Mhz nutzen?
Kannst Du, aber dann mußt du im Quelltext das Verhältnis von CPU-Takt zu
LCD-Kommunikation anpassen, damit du das LCD nicht wieder überrennst,
sofern das nicht automatisch im Quellcode erledigt wird. Und das ist ja
hier ja offenbar nicht der Fall.
F_CPU ist zunächst einmal nur eine Konstante und hat keinen Einfluß auf
den tatsächlichen Takt. Sinn und Zweck besteht darin hier den
tatsächlichen Takt einzutragen und anschließend in taktabhängigen Teilen
des Quellcodes diese Konstante zu verwenden, anstatt überall den Wert
eintragen zu müssen.
Damit wird aber keinesfalls Takt für die Hardware vorgegeben! Man kann
da auch völligen Unfug eintragen. Stimmt der Wert nicht mit dem
tatsächlichen Takt überein, so kommen bei den Formeln im Quelltext
natürlich falsche Werte heraus und das Programm arbeitet nicht korrekt,
weil das Timing nicht stimmt. Verwendet der Quellcode diese Konstante
nicht, so hat ein falscher Wert dann natürlich auch keine Konsequenzen.