Hallo,

es geht um folgendes: Ich habe eine Anwendung mit Display und schnell wechselnden Werten.
In der Hauptschleife befindet sich ein gosub befehl über den in jedem Programmdurchlauf ein mal das Sub zur aktualisierung der Displaywerte aufgerufen wird.

Wenn das Programm läuft werden die Displaywerte aber für diese Verhältnisse sehr langsam aktualisiert (ich schätze mal so alle 10-50ms), jedenfalls ist ein ganz leichtes flackern beim überschreiben zu sehen, wenn sich ein Wert schnell ändert (man dreht z.B. schnell ein Poti) dann scheint er zu springen. Das ist sehr unschön und auch die Tasterabfrage läuft so schlecht, dass gern mal ein Tastendruck der per debounce in der Hauptschleife einfach "übersehen" wird.

Wenn ich nun den $crystal auf 1.600.000 statt 16.000.000 stelle, funktioniert alles wunderbar so wie ich das möchte.

Jetzt bin ich etwas irritiert: Ich dachte bisher immer, dass pro Takt ein kompletter Programmdurchlauf stattfindet. Nach dieser Feststellung wäre das aber widerlegt.

Kann mir jemand genauer erklären was es mit dem Verhältnis von Taktfrequenz und Programmabarbeitung auf sich hat?
Und wie kann ich dann errechnen wie lange ein Programmdurchlauf dauert? (bei mir scheint es im Moment im Millisekundenbereich zu sein was ich für höchst unglaubwürdig halte)
Und vor allem: Wer hat eine Idee wie ich mein Problem lösen kann ohne dem Controller einen falschen Takt vorgaukeln zu müssen?

Edit: Ja ich habe einen 16Mhz externen Quarz auf dem Board, Ich habe auch das Fusebit in Bascom geändert (1111: External XTAL)