Genauso viel wie mit der Frage. Genau genommen sogar deutlich mehr. Es stecken nämlich folgende Weisheiten darin: 1. man kapert nicht für ein neues Problem alte Threads 2. Ein Quelltext, von dem die Hälfte fehlt, ist nichts wert (von der fehlenden Foramtierung hatte ich gar nichts erzählt) 3. weil es evtl. um ein fehlendes volatile geht, steht die Lösung vielleicht im Tutorial, das man gerne lesen darf, bevor man fragt.
Versteh zwar immer noch nicht was das mit sei() zu tun habe könnte, aber jetzt hab ich zumindest einen Ansatz.
Hallo, ich habe auch das 128x64 Display von Pollin. Für erste Tests habe ich die Lib von Ape verwendet. Das klappt soweit auch ganz gut. Leider bekomme ich mehr oder weniger zufällige Pixelfehler und/oder ganze Verschiebungen der Schrift, wie auf dem Bild zu sehen. Woran kann das liegen? Ist bei jemanden schon mal das selbe Problem aufgetaucht? Vielen Dank schon mal
Klaus Wachtler schrieb: > Klaus Wachtler schrieb: >> 1. man kapert nicht für ein neues Problem alte Threads Ja aber dieses Thema befasst sich doch mit der Lib von Ape. Warum sollte ich ein neues Thema starten, wenn sich mein Problem GENAU darauf bezieht?????? Zurück zum Thema: Hat jemand schon ähnliche Erfahrungen mit der Lib von Ape gemacht?
lcd17 schrieb: > Warum sollte > ich ein neues Thema starten, wenn sich mein Problem GENAU darauf > bezieht?????? Weil es nichts mit der Originalfrage zu tun hat. Oder hast du zur Originalfrage einen sinnvollen Beitrag? Und es gibt auch hier Spielregeln, in denen so etwas steht.
Servus, hat jm von euch schon mal das Datenbyte auf PortB des ATMega32 gelegt? es geht alles, nur leider das Programmieren per ISP nicht mehr.... Habe dann Widerstände zwischen µC und den betroffenen Datenleitungen gesetzt: MISO braucht keinen Widerstand. SCK 2,2kOhm MOSI 2,2kOhm Nun geh das Programmieren fehlerfrei...jedoch leuchtet Zeile 6, 14, 22, ... dauerhaft....??? Es scheint am MOSI Pin zu liegen...Gehe ich allerdings mit dem WIderstand herunter geht die Programmierung wieder nicht mehr :( WAS TUN???
>Es scheint am MOSI Pin zu liegen...Gehe ich allerdings mit dem >WIderstand herunter geht die Programmierung wieder nicht mehr :( Mach 10k Pulldowns an die CS Pins.
holger schrieb: >>Es scheint am MOSI Pin zu liegen...Gehe ich allerdings mit dem >>WIderstand herunter geht die Programmierung wieder nicht mehr :( > > Mach 10k Pulldowns an die CS Pins. Das hat funktioniert! Danke!!! Fehlt nur noch die Erklärung warum dies so ist?
hallo zusammen, habe mein tg12864b-13 display funktionsfähig vor mir liegen, soweit ist ja auch alles schön und gut...nun zu meiner frage: gibt es eine möglichkeit erst die daten in das display ram zu laden und dann erst die ausgabe zu aktivieren. einfaches bsp.: ein "fillrect" zeichen jedes pixel wird einzeln in das ram geschrieben, wenn das rechteck im ram vollständig ist, dann erst ausgeben. wenn ich das datenblatt des ks0108 richtig verstanden habe, dann ist das data latch für das dauerhafte anzeigen zuständig und das display data ram zum zwischenspeichern (oder auch zum vorladen)?! ich möchte damit verhindern, dass ein objekt ausgegeben wird obwohl es noch nicht vollständig ist. hoffe ihr könnt mir da helfen. gruß adam
Wie Du schon erkannt hast, es bei der Abtastung aus dem RAM das Display ständig aufgebaut, also jede Änderung eines Bytes im RAM ist sofort aktiv. Da es keine 2 Pages direkt gibt, kannst du es daher auch nicht direkt RAM-Pages switchen. Es gibt nur eine Möglichkeit den Aufbau zu beschleunigen. Dazu muß man im ansteuernden µC ein simultanes RAM-Abbild schaffen. Dieses beschreibt man direkt und schickt in gewissen Zeitintervallen bzw. Ereignissen auf schnellstem Weg alle RAM-Daten in den Display-RAM. Verhindert Flimmern und langsamen Bildaufbau. Kostet aber einiges an RAM (Pixelzahl / 8 Bytes), was sich aber im Ergebniss auszahlt, wenn dies gefordert ist. Grüße Wolfgang
nun gut, das mit dem ram abbild ist natürlich eine gute idee, doch mehr als 1 byte kann ich doch dann trotzdem nicht aufeinmal übertragen, sprich das flimmern würde sich evtl. verringern. oder habe ich dich da falsch verstanden?
Mehr als ein Byte bekommst du parallel je Enable-Takt eh nicht in den Display-RAM geschrieben. Wenn du das Ganze jedoch optimal programmierst kommst du locker unter 1ms je Transfer weg (Schau dir dazu die Pixel-Zeit im Datenblatt einmal näher an). Zudem sind selbst bewegte Animationen alle 20ms (50 Frames/Sek) weitaus ausreichend. Da wird dir das Display so oder so einen Streich spielen, da die Pixel im Wechsel nicht so schnell hinterherkommen und du daher Schlieren sehen wirst. Von diesem Aspekt aus ist diese Methodik weitaus angemessen anzusehen. kurz die Fakten: ---------------- - Direktes Arbeiten im µC-RAM vereinfacht viele Aktionen, da man direkt ohne dauerndes Lesen im Display-RAM im µC-RAM die Aktionen und Bitoperationen ausführen kann. - Der Transfer muß eh stattfinden, ob du ihn nun auf einen Rutsch oder gestückelt im Algorithmus überträgst ist daher eher unwesentlich. - RAM-Pages kannst du auf diese Weise auch einfach bauen, einfach 2. Array anlegen und hast es schon (so viele wie der µC-RAM reicht). - Optimierungen der Übertragungen kannst du auch durchführen. Einfach Nur Bereiche übertragen die auch geändert wurden (am idealsten rechteckiger Bereich). Da sind deiner Kreativ kaum Grenzen gesetzt. - Aktualisierungen auf diese Weise bei diesem Display sind unter 70ms kaum merklich optimaler. - Viel Erfolg... Grüße Wolfgang
danke erstmal :) hab noch eine idee, nur bin ich mir nicht sicher ob das evtl. ein falscher weg ist: ich dachte mir, man könnte einen zähler benutzen, der bei überlauf ein interrupt auslöst (z.b. jede 40ms). sollte zu diesem zeitpunkt ein flag gesetzt sein, das ein neuzeichnen signalisiert, werden die neuen daten ans display gesendet. damit hätte ich einen festen zeitpunkt zu dem das neuzeichnen bzw. abändern geschieht. frage mich jedoch ob das überhaupt sinnvoll ist. gruß adam
Macht man meist so, ist kein Fehler. Nur sollte das Bild natürlich komplett aufgebaut sein zum übertragen. Hast du keien freien Timer-Interrupt? Würde ebenso genügen... Grüße Wolfgang
klar... im moment habe ich noch alles frei, soweit. hab mir nun überlegt, eine eigene library zu schreiben, mit ram-abbild usw. bis ich die frei verfügbaren lib's angepasst habe, vergeht genau soviel zeit :) aber dann werde ich das direkt so auslegen, dass es mit dem timer zusammen passt - weis ja nun, dass die idee garnicht so schlecht war. danke gruß adam
Ich habe hier gerade den FontCreator offen und versuche eine Font aus einer vorhandenen zu erstellen. Am liebsten windings/webdings aus einer .ttf Datei. Leider kam ich da nicht weiter, weiss jemand von euch, ob und wenn ja, wie das geht?
hi! ... actually i using your library in my proyect, but i have a doubt about that, what is the conection for PIN RESET?
Die Lib scheint ziemlich broken zu sein. Bei mir kommen nur warnings und errors beim compile-versuch: (Long Version: http://pastebin.com/3U3DPL41 ) Short Version: > avr-gcc --version avr-gcc (GCC) 4.8.2 > uname -a Linux foo 3.10.22-1-MANJARO #1 SMP Wed Dec 4 22:15:26 UTC 2013 i686 GNU/Linux ... glcd_ks0108_v11/ > ls arial_bold_14.h corsiva_12.h ks0108.c ks0108.h ks0108Test.c makefile readme.txt > make In file included from ks0108Test.c:16:0: arial_bold_14.h:48:16: error: variable 'Arial_Bold_14' must be const in order to be put into read-only section by means of '__attribute__((progmem))' static uint8_t Arial_Bold_14[] PROGMEM = { ^ In file included from ks0108Test.c:17:0: corsiva_12.h:48:16: error: variable 'Corsiva_12' must be const in order to be put into read-only section by means of '__attribute__((progmem))' static uint8_t Corsiva_12[] PROGMEM = { ^ .............. ^ ks0108.h:97:16: warning: inline function 'ks0108ReadData' declared but never defined [enabled by default] makefile:376: recipe for target 'ks0108Test.o' failed make: *** [ks0108Test.o] Error 1 >
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.