Так вот из за этого решил сделать для диспетчер для I2C, который будет запускать все процессы периферии касательно I2C и обрабатывать аварии. Так как периферии много и вложений функций больше 3-4 решил сделать во время ожидания флагов I2C выход с сохранением адреса возврата.
Вначале функции поставил переход на адрес ожидания флагов, а само ожидание сделал так:
Код: Выделить всё
SAVE_CONTENT();
NOP;
while(condition){
//NOP или действия
return OS_WORK;
}
В общем, какое то мутное представление всего, как это выглядит правильно ?