Forum: Mikrocontroller und Digitale Elektronik DMA bei Display benutzen?


von Tobias S. (tryan)


Lesenswert?

Hallo,

ich steuere z.Z. ein Grafik Display (320x240Pixel, 65K Farbe) mit einem 
Xmega128A1 über UART (SPI-Modus 16Mhz) an.

Wenn ich das Display komplett neu beschreiben möchte dauert es "relativ" 
lange und die CPU ist voll ausgelastet.

Würde es helfen die einzelnen Pixel (Farbe) Information erst mal in 
Array(Buffer) zu schreiben und dann mit Hilfe von DMA zu dem Display zu 
transportieren?

Dabei würde das Array aber leider alle grenzen Sprengen (320*240*2).

Gibt es vielleicht "clevere" Lösung?

Viele Grüße Tobias

von Daniel W. (danie)


Lesenswert?

Müssen echt alle Pixel des Displays neu beschrieben werden?
wenn nein:
nur die Pixel beschreiben die sich geändert haben
grüße, danie

von Tobias S. (tryan)


Lesenswert?

Danke für deine Antwort.

Ist es den unüblich das ganze Display neu zu beschreiben?

Es ist den sinnvoller sich im Programm zu merken welche Pixel ich 
beschrieben habe und welche ich dann neu beschreiben muss?

Viele Grüße Tobias

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

Ich hab bei einem Projekt mit dem S65 die Erfahrung gemacht, dass DMA 
wesentlich schneller ist, als jeden Pixel einzeln zu übertragen.

Zudem sieht's besser aus, das komplette Bild erst intern aufzubauen und 
dann in einem Schwung zu übertragen, als die Bildteile direkt auf dem 
Display zuzeichnen.

Das ganze braucht natürlich entsprechend viel RAM, beim S65 ging's noch 
:)


Gruß
Lasse

von Tobias S. (tryan)


Lesenswert?

Hallo,


würde es vielleicht gehen wenn man ein Array für die Spalten und ein 
Array für Zeilen aufbaut und dann via DMA die beiden Arrays auf das 
Display zu übertragen?
Ist das mit dem DMA möglich?

Ich ging davon aus das man in der Init. dem DMA sagen muss wie groß der 
Buffer ist, auf dem er zugreifen kann...

Viele Grüße Tobias

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
Noch kein Account? Hier anmelden.