Выдернул её из розетки. Вставил, а она, сука, помнит, чем она занималась до отключения! И сразу продолжила своё черное дело. Уже и отсек с "порошком" прополоскала.
Оказалось, что прервать процесс и запустить на других условиях не так-то просто.
void main(void)
{
for( ;; )
{
//главный цикл микроконтроллера
automaton();//вызов автомата
//таких автоматов в главном цикле могут быть десятки, каждый занимается своим делом
//и друг другу не мешают
}
return 0;
}
void automaton()
{
static int state=0;
switch(state)
{
case 0:
send_request();
state=1;
break;
case 1:
if(answer_ready())
state=2;
break;//если условие не выполнено, state остаётся равным 1
case 2:
read_answer();
state=0;
break;
}
}