Страница 1 из 1

AvrStudio не читаются данные из Program memory

Добавлено: Вт сен 20, 2011 18:55:34
Logic Star
Определяю массив в PROGMEM, который находится в структуре см код.
При попытке прочитать данные через (pgm_read_byte) выдает не верные данные.

Код: Выделить всё

typedef struct 
{
   const int8_t *read ;     
} _Query;

const int8_t PROGMEM read   [13]=  {0xE3,0xEE,0xF2,0xEE,0xE2,0x20,0xF7,0xE8,0xF2,0xE0,0xF2,0xFC,0xff};
  const _Query PROGMEM  Query = {read };

void main(void)
{
data=pgm_read_byte(&((Query.read   )[0]));// не те данные. причем указатели (&(Query.read)[0]) и (&(read[0])) равны и оба в progmem.
}

Re: AvrStudio не читаются данные из Program memory

Добавлено: Вт сен 20, 2011 19:49:27
Мастер Ломастер
что-то у вас как-то накручено... зачем структура? зачем отдельный экземпляр структуры? зачем столько скобок?

однако, все нормально работает - считываются верные данные из массива...

кстати, при работе с макросом PROGMEM слово const можно не писать

Re: AvrStudio не читаются данные из Program memory

Добавлено: Вт сен 20, 2011 20:07:19
Logic Star
Мастер Ломастер писал(а):... зачем структура? зачем отдельный экземпляр структуры? зачем столько скобок?

однако, все нормально работает - считываются верные данные из массива...
Структура для удобочитаемости. В рабочем варианте в ней собрано гораздо больше массивов.
Отдельный экземпляр? А как же создать объект структуры, ведь изначально определен только тип.
А покажите как получилось у вас...
Да, и в какой студии работаете, я в 5-ке

Re: AvrStudio не читаются данные из Program memory

Добавлено: Вт сен 20, 2011 21:08:54
Мастер Ломастер
как я вам покажу? я ваш код вставил в исходник и прогнал в отладчике - читаются элементы массива без проблем. но у меня не пятерка, а старая добрая 4-ка :)