-
Versuche mal den Internal Osc. auf 8MHz über Fusebits einzustellen. Wenn du schneller sein willst, nehme einen Externen Oszillator mit 16MHz. Dein µProfessor schafft dann halt schneller. Oder versuchs mit Bus-system. das geht auch ganz gut. Und ich habe keine RW-Leitung.
-
Hi,
ein schnellerer Quarz hilft da gar nix.
Bascom berechnet die Zeiten ja aus der angegebenen Quarzfrequenz.
10 ms sind in Bascom immer 10 ms, egal was für ein Quarz drin werkelt.
Vorrausgesetzt, man lügt seinen Controller nicht an, wie ich weiter oben beschrieben habe.
Wenn man allerdings bösartigerweise nur die halbe Quarzfrequenz angibt, halbieren sich auch alle Zeiten!
Die Wartezeiten für's Display verkürzen sich so ebenfalls.
Das Display wird also etw doppelt so schnell angesteuert.
Blöd' ist halt, daß man alle anderen Wartezeiten im Programm umschreiben muß, damit das wieder passt.
Gruß
Christopher
-
ja, das ist mir schon klar, dass in bascom 10ms auch 10ms sind, aber die befehle werden schneller abgearbeitet, verstehst was ich mein? es gibt schon einen unterschied ob du jetzt mit 8MHz oder 16Mhz (wenn du einen externen oszillator nimmst) arbeitest. Die zyklendauer ist einfach kürzer. Die befehle werden 2 mal so schnell abgearbeitet.
Das mit dem Übertakten ist zwar möglich, aber ob das gesund ist?!?
-
Hi,
Bascom hat anscheinend recht lange Wartezeiten für die Displays drin, um sicherzustellen, daß das Display nicht beim schreiben noch busy ist.
Diese Wartezeiten lassen sich mit genanntem Trick verkürzen.
Alle von mir getesteten Displays liefen so noch einwandfrei, nur eben schneller.
Klar wird der Programmablauf mit doppelter Frequenz auch schneller, aber die Wartezeiten für's Display bleiben anscheinend gleich, da die wohl durch die Angabe der Quarzfrequenz berechnet werden.
Gruß
Christopher
-
Hallo,
habe es hinbekommen und kann jetzt meine Daten "manuell" per "Port-Umschaltungen" aufs Display senden, klappt wunderbar schnell (auch ohne Busyflag abfrage).
Jetzt noch eine Frage, damits ganz top wird:
Wie wird "manuell" das Display initialisiert? (Ohne Config LCD / initlcd) Gibt es da einen bestimmten Ablauf, der eingehalten werden muss?
In den wikis steht dazu leider nichts ...
Damit kann ich dann noch ein wenig mehr Speicher sparen.
Hier mal ein Beispiel der "manuellen Übertagung:
Code:
$regfile = "m88def.dat"
$crystal = 8000000
Ddrb.3 = 1
Portb.3 = 0
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portb.5 , Rs = Portb.4
Initlcd
Cursor Off Noblink
Cls
Locate 1 , 1
Hauptprogramm:
Do
Locate 1 , 1
Lcd "Hallo"
Wait 2
'------------ Zahl 3-------------------------
Portb.5 = 1 'E auf high
Portb.4 = 1 'RS auf high, um Daten zu senden
Portc = &B00001000 'C2-C5 übertragen Bits 4-7
Portb.5 = 0 'E auf low um Daten zu lesen
Portb.5 = 1 'E wieder high
Portb.5 = 1 'E wieder high
Portc = &B00011000 'C2-C5 übertragen Bits 0-3
Portb.5 = 0 'auf low um Daten zu lesen
Portb.5 = 1 'E wieder high
Wait 2
'------Clear-----------------
Portb.5 = 1 'E auf high
Portb.4 = 0 'RS auf low, um Befehl zu senden
Portc = &B00000000 'C2-C5 übertragen Bits 4-7
Portb.5 = 0 'E auf low um Daten zu lesen
Portb.5 = 1 'E wieder high
Portc = &B00000100 'C2-C5 übertragen Bits 0-3 (Bit0 ist 1 für Clear Display)
Portb.5 = 0 'auf low um Daten zu lesen
Portb.5 = 1 'E wieder high
Wait 2
Loop
End
Grüße
Robert