Ho progettato il mio dispositivo di gioco portatile basato su un microcontrollore AVR e un piccolo display OLED.
Ho iniziato con un display monocromatico 128x64 pixel e posso disegnare comodamente su di esso con oltre 60 fotogrammi al secondo.
Di recente l'ho rielaborato per utilizzare un OLED RGB, 128x128 pixel senza pensare davvero troppo solo per scoprire che avrei potuto ottenere solo circa 4 FPS. Dopo un po 'di riflessione e attento refactoring posso ottenere fino a ~ 12 fps se non mi interessa troppo fare qualsiasi altra cosa!
La mia domanda è: in che modo un dispositivo come GBA (Game Boy Advance) ha raggiunto un frame rate di quasi 60 fps? Ho pensato di avere un "processore grafico" separato, ma mi sono reso conto che sarei ancora colto da bottiglia trasferendo i dati di visualizzazione a quello.
Mi sono anche chiesto di usare l'interfaccia parallela a 8 bit vestigiale che la maggior parte di questi schermi tende ad avere, il che potrebbe farmi una velocità di 8x, tranne per il fatto che i moderni MCU non tendono ad avere interfacce hardware parallele come fanno per seriale e bit- il bang probabilmente consumerà molto il guadagno di velocità.
Quali altre opzioni esistono?
Attualmente sto usando un ATmega1284P collegato a un controller OLED SSD1306 tramite USART-SPI. Questa è la versione monocromatica.
Lo schermo a colori era un SSD1351, non originariamente collegato a SPI hardware. Non ero convinto che avrebbe fatto abbastanza differenza, nel complesso è troppo lento
So di poter ottenere MCU più veloci, ma voglio sapere quali altre opzioni potrei esplorare: il processore GBA è molto più lento del mio 1284!