Нашёл я проблему по которой невозможно быйти из подменю...
Допустим я захожу в меню настройки. Там 3 пункта:
Настройка 1
>Настройка 2
Настройка 3
Активен пункт 2.
тогда при нажатии на ESC происходит вызов:
Код
menu[current_menu].m[current_poz].function()
Совершенно очевидно что function() не является функцией goto_menu(), т.к. это функция вызовает опии пункта настройки 2.
Есть 2 выхода либо добавть отдельно пункт Выход в каждое подменю и поместить для вызова функцию goto_menu(), либо:
Код
case ESC: {
//убрать menu[current_menu].m[current_poz].function(&kkk);
goto_menu(); //оставить
/*В таком случае при нажати на ESC всегда будет вызываться данная функция*/
print_menu();
. . .
break;
P.S. В ИАР есть возможность посмотреть как ведёт себя код, какие переменные куда идут, в режиме отладки. Если нет возможности его использовать, то неплохо бы поставить AVRStudio и при критических ситуациях там просматривать, что происходит с кодом...