Hat jemand ne Ahnung warum das so ist?
Außerdem die Frage, wieso die sw_spi Lösung soooo viel langsamer ist?
Der einzige Unterschied im Code ist in der LCD_init zu sehen.
Vielen Dank im Voraus für eure Hilfe.
Gruß electricar
Edit:
Übrigens wird der obere Teil mit der SW-SPI ganz normal dargestellt!
Naja das HW SPI läuft mit seiner Maxgeschwindigkeit von alleine, das SW
SPI kostet somit Rechenzeit.. wieviel nun wirklich habe ich auch keinen
Plan.
Ich benutze auch das HW SPI via U8g an Arduino und habe das Problem
nicht.
D. M. schrieb:> Hat jemand ne Ahnung warum das so ist?
Zwischen uC und Display (CLOCK Leitung) einen Widerstand 56-120 Ohm.
CLOCK ist empfindlich bei hohen Frequenzen, DATA dagegen ist
weitgehend unkritisch.
Hallo zusammen,
vielen Dank für eure Antworten.
Leitungslänge ist ca. 15cm. Kürzer kann ich aktuell nicht testen, denke
aber nicht, dass das ein Problem ist. Kenne viele PCBs auf denen der SPI
Bus über das komplette Board mit einer längeren Leitung geht.
Mit dem Serienwiderstand hat sich leider nichts geändert.
Hab mal paar Bilder aufgenommen. Meiner Meinung nach sieht das ganz ok
aus. Was sagt ihr? Masse ist über ein kleines Kabel angebunden.
Die Spannung vom Controller uns Display ist die gleiche. Oder meinst du
etwas anderes?
Was aufgefallen ist:
Durch kurzes Lösen und Zusammenschließen der Verbindungen (SDA und SCL)
vom Board zum LCD wandert der verpixelte Kasten manchmal an eine andere
Stelle, was jedoch noch weitere Verpixelungen mit sich zieht...
Grüße
D. M. schrieb:> Durch kurzes Lösen und Zusammenschließen der Verbindungen (SDA und SCL)> vom Board zum LCD wandert der verpixelte Kasten manchmal an eine andere> Stelle, was jedoch noch weitere Verpixelungen mit sich zieht...
Bilder sehen gar nicht mal so schlecht aus, sollte so funktionieren.
Da es aber nicht funktioniert, ist der SPI wahrscheinlich zu schnell.
Wie ich sehe, wird LCD uber SPI-Modul angesteuert ?
Wenn ja, vergiss alles uber 800KHz.
&u8g_dev_st7920_128x64_4x_hw_spi
Schonmal &u8g_dev_st7920_128x64_1x_hw_spi probiert?
Muss man überhaupt die ganzen Pins angeben, kenne das nur mit CS und
Reset?
ausprobiert, jedoch keine Besserung.
Ich glaube ohne Arduino muss man alle Pins angeben. Zumindest gibt es
mir eine Fehlermeldung aus (too few arguments).
Ja, das LCD wird über SPI angesteuert. Wie bekomme ich es langsamer?
Habe es über SPR0 und SPR1 probiert, jedoch auch hier keine Änderung...
D. M. schrieb:> Ja, das LCD wird über SPI angesteuert. Wie bekomme ich es langsamer?> Habe es über SPR0 und SPR1 probiert, jedoch auch hier keine Änderung...
Also, erst mal LCD Init, danach SPI2x auf 0, SPR0 und SPR1 auf 1.
Irgendetwas auf LCD schreiben.
Wenn nach der LCD-Ausgabe SPR0, SPR1, SPI2x wieder verstellt werden,
Library wegschmeissen.
Wenn die bits aber unverandert bleiben, langsam SPI Frequenz erhohen,
bis es wieder anfangt, Pixel durcheinander zu bringen.
Ich verstehe es langsam nicht mehr...
Wenn ich es als Arduino flashe, funktioniert alles.
Normal in C ohne Arduino Bootloader gibt es diesen komischen Balken
oben.
Habe mit SPI2x, SPR0 und SPR1 rumgespielt, aber in den meisten
Kombinationen kam gar nichts auf dem Display. Wenn was kam, dann wieder
nur verpixelt.
Ist hier nicht auch ab und zu der Autor der Library unterwegs? :D
Evtl. sieht er das ja und kann weiterhelfen. Aktuell bin ich echt
überfragt...
Trotzdem vielen Dank natürlich an alle die weitergeholfen haben!
Evtl. fällt ja jemandem noch was ein :)
Gruß
Die Installationsanleitung mit allem drum und dran befolgt?
AVR Studio 4: Set additional options (Project - Configuration - Custom
Options)
[All Files]
-ffunction-sections
-fdata-sections
[Linker Options]
-Wl,--gc-sections
Wie im Example hinter draw() vielleicht noch nen 100ms delay rein um zu
Gewährleisten das alles übertragen wurde bevor ein neues Bild erzeugt
wird.
D. M. schrieb:> Ich verstehe es langsam nicht mehr...> Wenn ich es als Arduino flashe, funktioniert alles.> Normal in C ohne Arduino Bootloader gibt es diesen komischen Balken> oben.
Dann ist doch alles klar. In der Arduino Umgebung wird etwas
initialisiert, was du nicht initialisierst.
MfG Klaus
D. M. schrieb:> Ich verstehe es langsam nicht mehr...> Wenn ich es als Arduino flashe, funktioniert alles.> Normal in C ohne Arduino Bootloader gibt es diesen komischen Balken> oben.
Das hattest du aber auch gleich sagen konnen.
Klaus schrieb:> Dann ist doch alles klar. In der Arduino Umgebung wird etwas> initialisiert, was du nicht initialisierst.
Stimme ich vollkommen zu.