Timer에게 일을 주자!
2007.07.25 10:31
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();
}
각 펑션에서 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();
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
30 | sp232 capacitor 오류 | TsKit | 2007.07.15 | 6277 |
29 | atmega spi 2x mode | TsKit | 2007.07.12 | 6390 |
28 | extern array problem | TsKit | 2007.07.10 | 4140 |
27 | bulk-in error | TsKit | 2007.07.08 | 3859 |
26 | 10ms timer 설정(클럭 설정) | TsKit | 2007.06.25 | 4377 |
25 | long 연산 주의할점 | TsKit | 2007.06.24 | 4768 |
24 | long(32bit) 연산 주의할점 II | TsKit | 2007.09.01 | 5469 |
23 | ecc와 속도 | TsKit | 2007.08.20 | 3999 |
22 | const data를 flash area로... | TsKit | 2007.07.31 | 4229 |
21 | device driver단의 read timing | TsKit | 2007.07.29 | 4190 |
20 | nand 파일 시스템과 속도 | TsKit | 2007.07.27 | 4688 |
19 | nand 파일 시스템과 메모리 | TsKit | 2007.07.27 | 5508 |
18 |
jumper input 포트가 필요해서
![]() | TsKit | 2007.07.26 | 3952 |
17 | sd card 초기화 에러시... | TsKit | 2007.07.25 | 5802 |
» | Timer에게 일을 주자! | TsKit | 2007.07.25 | 3947 |
15 | fat32 포맷할 때는 | TsKit | 2007.07.24 | 4253 |
14 | Nand 플래시의특성과 파일시스템[펌글] | TsKit | 2007.07.24 | 10625 |
13 | 아답터 전원 이야기 | TsKit | 2007.09.13 | 4300 |
12 | Font 이야기 | TsKit | 2007.09.04 | 4440 |
11 | avrstudio runtime error 발생 [1] | TsKit | 2008.03.02 | 6126 |