Cómo organizar la memoria de vídeoContinuando con el planteamiento de construir un aparato con 64 colores (4 intensidades de cada color básico) y una resolución vertical de 32 pixeles, estoy analizando cómo tendré que estructurar la memoria RAM del PIC o memoria de vídeo para optimizar la ejecución del algoritmo de encendido de leds.
Puesto que el display barrerá horizontalmente la superficie de dibujo, para entender más fácilmente la disposición de los bytes, nos imaginaremos que es un banner horizontal de 384x32. En este caso, lo logico es organizar la memoria de manera que los bytes estén en vertical y posiciones contiguas supongan recorrer el display hacia abajo y hacia la derecha (o la izquierda si gira en sentido contrario).
De esta manera, si estamos representando el primer byte de la memoria en la parte superior izquierda del display, el siguiente representará un byte más abajo, y así hasta completar los 4 primeros que representan la primera columna de 32 leds.
Pero con un byte sólo podremos representar un bit por cada led, o lo que es igual, uno de los tres colores básicos. Por tanto, para poder mostrar los otros dos necesitaremos triplicar la información.
Mi propuesta es hacerlo de la siguiente forma, espero que con el gráfico se entienda.

Obviamente, si queremos hacer un mini-pwm de al menos 3 posiciones para representar los 4 gradientes distintos de cada color (000=apagado, 010=tenue, 101=iluminado, 111=brillante), habrá que multiplicar por tres la estructura de memoria anterior.
Esto nos da una necesidad de vRAM que es la siguiente:
384 columnas * 4 bytes de altura * 3 colores * 3 PWM = 13.824bytes = 13,5KB
Los únicos micros que tienen esa RAM son algunos de las familias 24H y 33F:
dsPIC33FJ64GP706
dsPIC33FJ64GP306
dsPIC33FJ128GP710
dsPIC33FJ64GP310
dsPIC33FJ64GP710
dsPIC33FJ64MC706
dsPIC33FJ64MC710
dsPIC33FJ64GP708
dsPIC33FJ128MC708
PIC24HJ128GP306
PIC24HJ128GP310