Ich habe mein eigenes Handspielgerät entwickelt, das auf einem AVR-Mikrocontroller und einem kleinen OLED-Display basiert.
Ich habe mit einem monochromen Display mit 128 x 64 Pixeln begonnen und kann bequem mit über 60 Bildern pro Sekunde darauf zeichnen.
Ich habe es kürzlich überarbeitet, um eine RGB-OLED mit 128 x 128 Pixeln zu verwenden, ohne wirklich zu viel darüber nachzudenken, nur um festzustellen, dass ich nur etwa 4 FPS erreichen konnte. Nach einigem Überlegen und sorgfältigem Refactoring kann ich das auf ~ 12fps bringen, wenn es mir nicht so wichtig ist, etwas anderes zu tun!
Meine Frage ist - wie hat ein Gerät wie der GBA (Game Boy Advance) eine Bildrate von fast 60 fps erreicht? Ich dachte über einen separaten Grafikprozessor nach, erkannte aber, dass ich immer noch einen Engpass haben würde, wenn ich die Anzeigedaten dorthin übertrage.
Ich habe mich auch gefragt, ob ich die ursprüngliche 8-Bit-Parallelschnittstelle verwenden soll, die die meisten dieser Bildschirme haben, was mir eine 8-fache Geschwindigkeit einbringt, mit der Ausnahme, dass moderne MCUs keine Hardware-Parallelschnittstellen haben, wie sie es für serielle und bitbasierte Schnittstellen tun. Schlagen wird wahrscheinlich einen großen Teil des Geschwindigkeitsgewinns verschlingen.
Welche anderen Möglichkeiten gibt es?
Ich verwende derzeit einen ATmega1284P, der über USART-SPI an einen SSD1306-OLED-Controller angeschlossen ist. Das ist die monochrome Version.
Der Farbbildschirm war eine SSD1351, die ursprünglich nicht mit Hardware-SPI verbunden war. Ich war nicht überzeugt, dass es genug bringen würde Unterschied , es ist insgesamt einfach zu langsam
Ich weiß, dass ich schnellere MCUs bekommen kann, aber ich möchte wissen, welche anderen Optionen ich untersuchen könnte - der GBA-Prozessor ist viel langsamer als mein 1284!