Słuchajcie mam pewien problem z poprawną deklaracją.
Mam mianowicie utworzoną strukturę w pamięci programu flash i potrzebuję zdefiniować wskaźnik na pierwszy element tejże struktury.
Wyskakuje mi warning, chciałbym go uniknąć. Piszę na AVR'y pod Eclipsem. Listing:
#include <stdint.h>
#include <avr/pgmspace.h>
typedef struct data_s
{
uint16_t step;
uint8_t led_number;
int8_t pwm_growth;
} data_t;
data_t data[] PROGMEM = { {1,1,1}, (2,2,2} };
typedef data_t prog_data PROGMEM;
#define PGM_DATA_P const prog_data *
PGM_DATA_P data_ptr;
Program się kompiluje. Warning który dostaję to:
warning: ignoring attributes applied to 'struct data_s' after definition
Dodam tylko że brak jest warningów przy standardowej bibliotecznej konstrukcji wskaźnika na bajt we flashu. Bo jest to tak:
uint8_t x PROGMEM;
typedef char prog_char PROGMEM;
#define PGM_P const prog_char *
PGM_P ptr = &x;
Ja mam podobnie tylko ze strukturą co już daje warning. Wie ktoś jak się go pozbyć ?