Witam,
Po pierwsze. Chciałbym przenieść całą strukturę do pamięci flash:
Czy możecie mi wyjaśnić gdzie mam dopisać PROGMEM czy coś w tym rodzaju?
Po drugie. Struktura MENU_STATE zawiera element będący wskaźnikiem do funkcji. Stworzyłem sobie tablicę:
Jak widać w tej tablicy znajduje się jakaś tam przykładowa funkcja RobotStart (adres funkcji).
W programie głównym chciałbym do wskaźnika:
przypisać właśnie tą funkcję. Polecenie:
nie działa. Jak to się robi prawidłowo? Poza tym dostaję warningi typu:
"assignment makes pointer from integer without a cast"
"cast to pointer from integer of different size"
Wiem że coś jest nie tak ze wskaźnikami, ale nie wiem co (niewiedza szkodzi...)
Proszę o pomoc i dziękuję z góry za porady
Po pierwsze. Chciałbym przenieść całą strukturę do pamięci flash:
typedef struct
{
unsigned char state;
unsigned char input;
unsigned char nextstate;
} MENU_NEXTSTATE;
typedef struct
{
unsigned char state;
unsigned char *pText;
unsigned char (*pFunc)(unsigned char input);
} MENU_STATE;Czy możecie mi wyjaśnić gdzie mam dopisać PROGMEM czy coś w tym rodzaju?
Po drugie. Struktura MENU_STATE zawiera element będący wskaźnikiem do funkcji. Stworzyłem sobie tablicę:
const MENU_STATE menu_state[] PROGMEM = {
// STATE STATE TEXT STATE_FUNC
{ST_ROBOT_STOP, MT_ROBOT_STOP, NULL},
{ST_ROBOT_START, MT_ROBOT_START, NULL},
{ST_CZY_WYSTARTOWAC, MT_CZY_WYSTARTOWAC, RobotStart},
{ST_USTAW_PROMIEN, MT_USTAW_PROMIEN, NULL},
{ST_USTAW_DYSTANS, MT_USTAW_DYSTANS, NULL},
{ST_EDYTUJ_DYSTANS, MT_EDYTUJ_DYSTANS, NULL},
{ST_EDYTUJ_PROMIEN, MT_EDYTUJ_PROMIEN, NULL},
{0, NULL, NULL},
};Jak widać w tej tablicy znajduje się jakaś tam przykładowa funkcja RobotStart (adres funkcji).
W programie głównym chciałbym do wskaźnika:
unsigned char (*pStateFunc)(unsigned char);przypisać właśnie tą funkcję. Polecenie:
pStateFunc = pgm_read_byte(&menu_state[i].pFunc);nie działa. Jak to się robi prawidłowo? Poza tym dostaję warningi typu:
"assignment makes pointer from integer without a cast"
"cast to pointer from integer of different size"
Wiem że coś jest nie tak ze wskaźnikami, ale nie wiem co (niewiedza szkodzi...)
Proszę o pomoc i dziękuję z góry za porady
