ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
370965
Скрипач, пророк (24.11.2012 21:57, просмотров: 2828)
after_Protothreads. Прошу помощи в выборе наилучшего названия для двух функций. Гениальное творение Адама Дункелса гениально, но у меня почему-то редко удается только PT_WAIT_WHILE. Условий несколько. Есть еще действия... Короче, изобрел свое :) Почти PT_YIELD, но точка входа отдельно, команда отдать управление супервизору, отдельно. В тексте ниже, это PT_SET и PT_RET. Не нравятся сугубо названия этих двух. Прошу помощи зала в подборе более удачных :) static char Fans2Fd(struct pt *pt){ static uint8_t TL = 0; PT_BEGIN(pt); while(1){ L_IDLE: _Off(FD1); _Off(KM1); _Off(KM2); PT_SET(pt); if(B1_Button()) goto L_RUN_1; if(B2_Button()) goto L_RUN_2; PT_RET(pt); L_RUN_1: _On(KM1); _On(FD1); PT_WAIT_WHILE(pt, B1_Button()); PT_SET(pt); if(B1_Button()){ _Off(FD1); _Off(KM1); PT_WAIT_WHILE(pt, B1_Button()); goto L_IDLE; }; if(B2_Button()){ _Off(FD1); _Off(KM1); TL = SysTime_1s; PT_WAIT_WHILE(pt, (Delay(TL, SysTime_1s) < 15)); goto L_RUN_2; }; PT_RET(pt); L_RUN_2: _On(KM2); _On(FD1); PT_WAIT_WHILE(pt, B2_Button()); PT_SET(pt); if(B2_Button()){ _Off(FD1); _Off(KM2); PT_WAIT_WHILE(pt, B2_Button()); goto L_IDLE; }; if(B1_Button()){ _Off(FD1); _Off(KM2); TL = SysTime_1s; PT_WAIT_WHILE(pt, (Delay(TL, SysTime_1s) < 15)); goto L_RUN_1; }; PT_RET(pt); }; PT_END(pt); }
... но не любой ценой.