나는 16bit 장치에 묻힌 신청에 도움을 찾고있다. 함수 포인터를 통해 몇 가지 간단한 "작업/함수"를 실행해야합니다. 이러한 작업은 미리 정해진 간격으로 실행됩니다.시간을 잰 업무 명부
typedef struct
{
int timeToRun;
void (*fcn)(void);
} task_t;
task_t tasks[] =
{
{ 13_MSEC, fcn1 },
{ 50_MSEC, fcn2 },
{ 0, NULL }
};
volatile unsigned int time;
main()
{
for (ptr = tasks; ptr->timeToRun !=0; ptr++)
{
if (!(time % ptr->timeToRun))
(ptr->fcn)();
}
}
1ms에서 타이머 인터럽트를 실행할 수 있습니다.
interrupt void TimerTick(void)
{
time++;
}
경과 시간을 계산하는 방법에 대해 알고 싶습니다. 시간이 초과되면 확률로 % (모듈러)가 작동하는지 확인하는 방법. 어쨌든 시간 오버플로를 방지하고 % (모듈로)를 통해 정확한 타이밍을 유지하는 방법은 무엇입니까?
+1 타이머 구조체 내용입니다. – Sparky