Autor Tema: problema al leer un array  (Leído 3247 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
problema al leer un array
« en: 09 de Diciembre de 2010, 00:26:05 »
Hola amigos ...

Tengo el siguiente codigo y el siguiente problema:

Código: [Seleccionar]
const prog_uint8_t PROGMEM array_01[5] = {
0b10000100,
0b10010001,
0b10000001,
0b10010100,
0b10010000,
};

int main(void) {
uint8_t n;

while(1)//loop
{
n = 0;
while(n < 5)
{
SPI_MasterTransmit(array_01[1]); //Escribe el pixel
_delay_ms(100);
n = n + 1;
}
}
}

Ahora el problema es que si en lugar de manejar un valor fijo lo cambio por una variable, el resultado que obtendo es un valor cualquiera que no corresponde al array declarado.

Código: [Seleccionar]
"SPI_MasterTransmit(array_01[1]);" //Con un valor fijo funciona bien
"SPI_MasterTransmit(array_01[n]);" //Con una variable toma un valor cualquiera que no corresponde a nada declarado.


¿que es lo que está mal?
Alguien me sabe decir

Gracias y saludos
Julio - Argentina

Desconectado ma4826

  • PIC16
  • ***
  • Mensajes: 130
Re: problema al leer un array
« Respuesta #1 en: 09 de Diciembre de 2010, 10:52:01 »
 Estas accediendo a un array almacenado en la flash, no puedes acceder a el directamente tienes que usar las funciones que proporciona "pgmspace.h" .

 Así debería funcionar:
 
Código: [Seleccionar]
SPI_MasterTransmit(pgm_read_byte(&array_01[n]));
 Saludos,

 Miguel.

万人の友は誰の友でもない。

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: problema al leer un array
« Respuesta #2 en: 09 de Diciembre de 2010, 14:14:00 »
Hola, el compilador no se da cuenta que el array esta en Flash ??? no podria llamar automaticamente a esta función ?

Saludos !

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Re: problema al leer un array
« Respuesta #3 en: 09 de Diciembre de 2010, 20:45:40 »
Acá te dejo un hilo donde se trató este tema espero que te ayude: PGMSPACE

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Re: problema al leer un array
« Respuesta #4 en: 11 de Diciembre de 2010, 00:03:33 »

MUCHAS GRACIAS MIGUEL (ma4826), es correcto como vos decis y me fue de gran ayuda. GRACIAS


Estas accediendo a un array almacenado en la flash, no puedes acceder a el directamente tienes que usar las funciones que proporciona "pgmspace.h" .

 Así debería funcionar:
 
Código: [Seleccionar]
SPI_MasterTransmit(pgm_read_byte(&array_01[n]));
 Saludos,

 Miguel.

Julio - Argentina