datos de PROGMEM vs. datos calculados

3

En un proyecto arduino en el que estoy trabajando (ATMega328 en este momento) tengo un montón de datos de distancia vectorial que necesito usar para varios píxeles en una matriz.

Es un cálculo relativamente simple:

d = math.sqrt(math.pow(x2 - x1, 4) + math.pow(y2 - y1, 2)) //Not the arduino code

Fórmula de distancia de coordenadas muy ligeramente modificada (con valores x exagerados)

Sé que una computadora moderna puede hacer eso fácilmente, pero ¿va a ser más lento o más rápido que tener los valores para una matriz de 22x12 almacenados como una matriz de uchar PROGMEM 2-D? (x1 y y1 se fijan en el punto central ... así que solo una cuadrícula).

Estos valores son básicamente fijos, solo necesito conocerlos. Sé que acceder a los valores en flash es mucho más lento que en SRAM pero no estoy realmente seguro de cuántos ciclos de reloj tomará en comparación con la ecuación anterior. Un AVR no está exactamente optimizado para tales cálculos.

Actualización: Además, no es como si solo tuviera que buscar algunos de los valores de distancia vectorial en cada pase. En cada bucle necesito TODOS esos valores.

    
pregunta Adam Haile

1 respuesta

1

Este es mi ejemplo de cómo usar el espacio de memoria FLASH para buscar tablas 2D. define CONST ARRAY & READ desde aquí

La clave es usar macros especiales para forzar y leer los punteros de Flash ( PROGGG y pgm_read_word_near ) como el compilador toma como valor predeterminado el espacio de RAM.

Solo puedo imaginar que es mucho más rápido que calcularlo.

    
respondido por el mpflaga

Lea otras preguntas en las etiquetas