10msec를 만들어 놓고,
각 펑션에서 tick_add_task를 호출하여서 등록하면
OS는 스케쥴러는 없지만 키체크 서비스등과 같이 나름대로 여러 서비스를 할 수 있다.
tskit
=============================================================================================
static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
U8 tick_add_task(void (*f)(void))
{
int i;
/* Add a task if there is room */
for(i = 0;i < MAX_NUM_TICK_TASKS;i++)
{
if(tick_funcs[i] == NULL)
{
tick_funcs[i] = f;
return COMMAND_SUCCESS;
}
}
printf("Error! tick_add_task(): out of tasks");
return COMMAND_FAIL;
}
SIGNAL(SIG_OVERFLOW0)
{
U8 i;
// cli();
TCNT0 = TIMERINI;
for(i = 0; i < MAX_NUM_TICK_TASKS; i++)
{
if(tick_funcs[i])
{
tick_funcs[i]();
}
}
current_tick++;
// sei();
}