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.
@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
>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.
@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.
Oder du nimmst nen SRAm dann mußte halt einmal am Anfang die Daten vom Mega in den SRAM speichern.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.