реклама на сайте
подробности

 
 
> Как перейти по ссылке на функцию в WinAVR?, Не понятно во что преобразовать результат pgm_read_size
Igor_U
сообщение Jun 27 2006, 05:50
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 141



У меня есть массив в которой находятся ссылки на функции.

void (*f[])(void)={func_1,func_2};

При вызове функции - (*f[1])() адрес берется из озу.

Как правильно вызвать функцию? pgm_read_word возвращает short. Как short преобразовать в ссылку на функцию?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Jun 27 2006, 06:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



По идее строка f[1]() - есть вызов функции, зачем что то еще преобразовывать?
В ИАРЕ, например, работают вот такие конструкции:
Код
void f1(void)
{
}
void f2(void)
{
}

void f3(void)

{

}
__flash     void (*ff[])(void)={f1,f2};
__eeprom void (*ef[])(void)={f1,f2};
/*sram*/    void (*sf[])(void)={f1,f2};

void main(void)
{
   ff[0]();

   ef[1]();
   sf[2]();

...
}


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 16:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016