Пн дек 20, 2021 13:26:47
// Добавить задачу в очередь
void qtTask(qtTaskPtr ptr, qtDelay tick);
// Вызывается при каждом "tick", проводит отсчет задержки
void qtDecrementDelay(void);
// Пытается выполнить одну задачу из очереди
void qtDispatch(void);
volatile uint8_t f;
ISR(TIMER0_OVF_vect){
TCNT0 = TCNT_TICK; // 125Hz
f |= 1;
}
void tBlink(){
PORTB ^= 0x01;
qtTask(tBlink, 64);
}
int main(void)
{
init();
tBlink();
while (1)
{
if(f & 0x01){
f &= ~1;
qtDecrementDelay();
}
qtDispatch();
}
}
unit8_t btState; // Битовая маска. Единичка поднимается задачей qtButton при нажатии кнопки либо срабатывании автоповтора
Пн дек 20, 2021 15:20:40
Вы не описали - в какой момент он нажимает эти "+" и "Set" (и зачем еиу вообще их нажимать ?), и что из себя представляет задача "Изменение параметра" ?AndryG писал(а):юзер нажимает +, затем только Set. Активируется задача изменения параметра,
Пн дек 20, 2021 15:27:30
Пн дек 20, 2021 15:54:15
Пн дек 20, 2021 19:58:55
enum ConfigChange {ConfigChange_NONE, ConfigChange_EDIT};
ConfigChange state = ConfigChange_NONE;
Пн дек 20, 2021 22:12:25
Вт дек 21, 2021 08:33:37
Вт дек 21, 2021 11:57:44
Вт дек 21, 2021 12:29:33
Вт дек 21, 2021 12:57:58
Вт дек 21, 2021 13:31:05
Вт дек 21, 2021 14:34:23
Пока state==ConfigChange_NONE - ждём только "Set" (вход в режим редактирования), остальные нажатия или игнорим или пикаем (недопустимая кнопа). В режиме редактирования (ConfigChange_EDIT) же принимаем всё: "+","-","Set". Проще некуда....
Вт дек 21, 2021 15:02:41
Вт дек 21, 2021 16:28:30