Ich habe fix mal einen Code fetig gemacht.
M liegt mit auf PortB, Pin B3 um genau zu sein.
Läuft mit 114,6 Hz bei -O1.
Die Versorgung mit den +23V ist doch kein Problem mit einer Spannungspumpe.
edit: Natürlich meine ich eine Ladungspumpe
Bitte. Ich fand's natürlich interessant, auch wenn die einfach zu versorgenden Displays nicht mehr erhältlich sind.
Um es in eine .S auszulagern, war der Umbau komplett auf Assembler notwendig.Inzwischen überfordert mich Dein Code komplett
Prima.Er funktioniert trotzdem tadellos.
Ich hatte mich nicht mit der eigentlichen Funktion des Displays auseinandergesetzt, sondern nur Deinen Beispielcode umgesetzt.Die Ansteuerung ist sehr einfach. Nach jedem Frame wird gewechselt.
D.h., wenn Du einen funktionierenden Code einstellst, an dem ich sehe wann genau M kommen muss, dann ist's für mich am einfachsten danach meinen Code zu ändern.
Sind auf dem Kontrollport PORTB noch Pins verfügbar ?
Ich habe fix mal einen Code fetig gemacht.
M liegt mit auf PortB, Pin B3 um genau zu sein.
Läuft mit 114,6 Hz bei -O1.
Die Versorgung mit den +23V ist doch kein Problem mit einer Spannungspumpe.
edit: Natürlich meine ich eine Ladungspumpe
Geändert von MisterMou (01.05.2012 um 20:24 Uhr) Grund: B4 nach B3 umbenannt
Du meinst sicher eine Ladungspumpe.
Grüße,
Daniel
Laut Deinem Code liegt er auf PB3, nicht auf 4.
Kannst es im .h einfach ändern, wenn's doch PB4 sein sollte.
Anbei der angepasste Code, sollte theoretisch funktionieren. Basierend auf der momentanen Vorlage unter Verwendung von M wäre man mit den Opcodes CBI/SBI (statt Out) etwas besser gefahren.
Es dürfte kein großartiger Unterschied sein, hätte aber eine deutliche Veränderung des Codes erfordert, das wollt' ich vermeiden.
In der momentanen Version ist der Code dagegen einfach auf höhere Port-IO-Adressen anpassbar, was mit CBI/SBI nicht so problemlos ginge, bzw. dann deutlich länger brauchen würde.
Danke, du hast aber noch ne Kleinigkeit in der main() vergessen
Läuft wunderbar mit 75.0719Hz.Code:CTRL_DDR=0x0F;
Es ist in der Tat Pin B3
Immer diese groben Schnitzer
Das macht er natürlich wegen des Timers. Für Dich sind ja tatsächlich keine 120Hz wichtig, sondern was an Rechenleistung noch über bleibt, es ist mehr als ein Viertel. Also äquivalent einem mit 4MHz betriebenen µC und damit lässt sich ja immer noch Einiges anfangen.Läuft wunderbar mit 75.0719Hz.
Ah, ok.
Was mich interessieren würde, sind Bildstörungen beim Beschreiben des Zeichenspeichers bemerkbar ?
Es wird pro Interruptaufruf ja nur ein 12tel Buchstabe geschrieben, also müsste da theoretisch ein wenig Verhau entstehen, kann aber sein dass es durch die Trägheit des Auges nicht erkennbar ist.
Vorher hatte ich noch eine ISR gebaut, die jeweils eine der 20 Zeilen komplett auf einen Rutsch geschrieben hat.
Da hätt's sicher keine Störungen gegeben, aber bei Verwendung eines UARTs wär' bei ~34kBaud Schluss gewesen, weil sonst Zeichen nicht mehr abgeholt worden wären.
Fand ich dann auch nicht so optimal.
Ich glaube nicht, dass da problematische Störungen auftreten, der Mensch ist einfach zu langsam Ich werde es aber mal untersuchen.
Inzwischen habe ich mich auch mal an der Interrupt-Geschichte versucht, allerdings auf C Basis.
Das Ergebnis ist zur Zeit 60% Auslastung bei 50Hz und 90% Auslastung bei 75Hz.
Die Auslastung lässt sich an der Low-Zeit von Pin D0 abschätzen.
Ich bekomme allerdings Grafikfehler bei der -O1 Optimierung, sonst klappt alles.
Das ist alles Neuland für mich, also die ganze Displaygeschichte. Ich programmiere einfach drauf los, Hauptsache ist, dass es funktioniert.
Nur nochmal zur Erinnerung^^
Geändert von MisterMou (02.05.2012 um 23:07 Uhr)
Bis jetzt hattest Du nur statischen Text.
Da wird auch einiges merkwürdiges Zeugs produziert, besonders von der Konstruktion (mFlag<<M) halte ich nichts. Schon mal angesehen, was da selbst in -Os generiert wird ?Das Ergebnis ist zur Zeit 60% Auslastung bei 50Hz und 90% Auslastung bei 75Hz.
Ich lass mir immer die Takte im Simulator ausgeben.Die Auslastung lässt sich an der Low-Zeit von Pin D0 abschätzen.
Wahrscheinlich optimiert er Dir da irgendetwas weg. Bedeutet das, die höheren Optimierungsstufen funktionieren ?Ich bekomme allerdings Grafikfehler bei der -O1 Optimierung, sonst klappt alles.
Da Dein Ziel eine möglichst kurze Ausführungszeit ist, ist ein Einfachfrauflos halt sehr zufällig im Ergebnis.Ich programmiere einfach drauf los, Hauptsache ist, dass es funktioniert.
Lesezeichen