Estoy escribiendo un programa en WinAVR 2009 para el atmega32 en el cual tengo varias matrices en la memoria flash, el problema que tengo es que necesito declarar un punteros hacia el inicio de las matrices, bueno la idea es crear una matriz de punteros que apunte a las matrices en flash.
El problema es como declarar correctamente el puntero, aqui pongo un programa sencillo para ejemplificar:
#include <avr\io.h>
#include <avr\iom8.h>
#include <avr\pgmspace.h>
const uint8_t matriz[] PROGMEM =
{
0b01101100,
0b01101100,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
};
int main(void) {
uint8_t a[9], i;
uint8_t *p_matriz = &C_Dobles[0];
for (i=0; i<=9; i++){
a[i]=pgm_read_byte(p_matriz);
}
while(1==1) {
}
}
Este codigo lo simulo en avr studio pero me da una advertencia del tipo de objetivo apuntado y al simular me da valores incorrectos al revisar si copio la matriz de la flash en la matriz que declaro en ram. la declaracion del puntero la hice como normalmente se hace, asi lo hice para crear un puntero a una matriz que esta en eeprom y si funcino, alguna idea de como se declara correctamente.