Forum: Mikrocontroller und Digitale Elektronik Externer -Schneller - Speicher am Atmega oder ...


von Frank F. (z80-1)


Lesenswert?

Mahlzeit,

ich sitze über einem "Design"-Problem:

Die Aufgabe ist die Ansteuerung eines Display (OLED) über einen 
microController. Das Display wird parallel angeschlossen und soll das 
Bild (128*128 pixel, 16 Bit/Pixel) möglichst schnell darstellen, so daß 
sich u.a. eine Animation anzeigen lässt.

Das OLED hat einen eigenen Controller und speichert immer ein Bild (also 
kein Refresh nötig).

Ein Bild hat also einen Speicherbedarf von 32768 Byte (32k). Wenn ich 
von 'nem Atmega128 mit 16MHz ausgehe - seriellen Falsh z.b. DataFlash 
angeschlossen habe, dann komme ich - korrigiert mich - auf einen 
maximalen SPI-Clock von 8 Mhz. D.h (Adress-Overhead mal nicht gerechnet) 
ich kann pro Sekunde ca. 1.000.000 Bytes lesen (theoretisch). Oder liege 
ich da falsch ??

Wie sähe es denn mit einem parallelen Flash aus ? Gibts da schon 
Erfahrungen ?

Oder sogar ne bessere Idee ?
Platz für ca. 30 Frames (also ca. 1 MByte) wird benötigt.

von Falk (Gast)


Lesenswert?

@Frank Fritze

>Die Aufgabe ist die Ansteuerung eines Display (OLED) über einen
>microController. Das Display wird parallel angeschlossen und soll das
>Bild (128*128 pixel, 16 Bit/Pixel) möglichst schnell darstellen, so daß

>Platz für ca. 30 Frames (also ca. 1 MByte) wird benötigt.

Naja, paralleles Flash sollte sich genauso wie normalers SRAM 
anschliessen lassen. Allerdings kann der AVR nicht 1 MByte direkt 
addressieren, da müsste man mit Banking arbeiten. Ein Zugriff dauert 
AFAIK 3 Takte + ggf. Waitstates, fals der FLASH zu langsam sein sollte.

Aber auch 1 Mbyte/s über SPI ist schon ziemlich schnell. Aber mal was 
anderes, wozu braucht man 16bit/pixel? Ist das ein farbiges, also 5/6 
Bit pro RGB?
Aber 1 Mbyte/s vom FLASH ins Display schaufeln ist für nen normalen AVR 
schon ORDENTLICH Arbeit. Vielleicht sollte man dafür einen etwas 
grösseren Controller nehmen. Oder die "Drecksarbeit" des reinen 
Umkopierens in einen kleinen CPLD als DMA-Controller auslagern.


Mfg
Falk


von holger (Gast)


Lesenswert?

>D.h (Adress-Overhead mal nicht gerechnet)
>ich kann pro Sekunde ca. 1.000.000 Bytes lesen (theoretisch). Oder liege
>ich da falsch ??

Theoretisch ist das richtig. Aber die Daten aus dem Dataflash zu lesen
ist nur die halbe Wahrheit. Du musst sie ja noch in dein Display
schreiben. Das braucht auch wieder Zeit. Ich würde mal so von
350KByte/s ausgehen. Das kann man schaffen. Oder du schaufelst
die Daten OHNE Umweg (AVR) direkt vom Dataflash in das Display ;)
Mit ein bisschen Zusatzlogik ist das unter Umständen möglich.

von Frank F. (z80-1)


Lesenswert?

@Falk:

Ja, das ist richtig: da sDisplay ist ein  OLED mit 16Bit/Pixel (5:6:5); 
es gingen zwar auch 8Bit, aber das wäre optisch nicht so ideal, weil es 
sich bei der Darstellung um Photos handelt.

Es existiert eine Lösung mit einem PIC18F und dazu einem seriellen 
Flash, bei dem die sache schon ganz ordentlich ( 10 Frames/sec) läuft.

Im übrigen kannst du dir auch mal eine Demo unter

http://www.pelleplutt.net/data/kb9202-ol128/OLED128_SMC.MPG

ansehen - da hängt das OLED an einem AT91RM9200 ...

Aber ich denke, die Lösung mit einem parallelen Flash und dem OLED am 
gleichen (Daten-) Bus sollte gehen. Leider habe ich noch keinen 
gefunden, der so'n Flash am AVR betreibt usw.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Oder du nimmst nen SRAm dann mußte halt einmal am Anfang die Daten vom 
Mega in den SRAM speichern.

von KoF (Gast)


Lesenswert?

können die Megas denn mehr als 64 oder 128k externes ram ansteuern?

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.